Verwenden Sie nur Funktionen, die unter AIX oder anderen POSIX- und kaum mehr Systemen verfügbar sind:
find /usr/something/* /usr/something/.[!.]* /usr/something/..?* \
-prune -type f -user antoine -exec zip -r /tmp/file.zip {} +
findrekursiv in Unterverzeichnisse. Um dies zu vermeiden, -pruneweist es an, nicht in die Verzeichnisse abzusteigen, auf die es stößt. Das ist nicht gut, wenn ich renne, find /usr/something -type d -prune -o …weil dann /usr/somethingübersprungen würde. Also führe ich findalle Einträge in diesem Verzeichnis aus, außer .und ...
Eine einfachere Redewendung ist es, in das Verzeichnis zu wechseln und das Startverzeichnis .speziell zu behandeln. Hier würde es das resultierende Archiv ändern, das ./foostattdessen Pfade der Form hätte usr/something/foo. Diese Technik basiert auf der Tatsache, dass -name .nur das Startverzeichnis übereinstimmt und jede andere angetroffene Datei ihren eigenen Namen hat.
cd /usr/something &&
find . ! -name . -prune -type f -user antoine -exec …
Beachten Sie, dass zipdies mehrmals ausgeführt werden kann, wenn die Liste der Dateinamen für einen einzelnen Aufruf zu lang ist. Dies ist in Ordnung, da zip -rvorhandene Dateien im Archiv ersetzt werden. Wenn Sie einen anderen Archivierer verwenden, achten Sie darauf, ihn nicht in einem Modus aufzurufen, in dem ein neues Archiv erstellt wird (z. B. nicht verwenden tar -c).
find -user antoineals Argumente zum Komprimieren verwenden.zipLeider gibt es keine Option zum Lesen von NUL-getrennten Dateinamen und daher können Dateien mit Leerzeichen und Zeilenumbrüchen im Namen nicht sehr gut verarbeitet werden, wenn sie von einem anderen Befehl bereitgestellt werden. Alternativ können Sie ein Python-Skript schreiben, es verfügt über ein gutes Zip-Modul und spezielle Dateinamen können problemlos verarbeitet werden.