Ich muss die Dateien des Unterverzeichnisses rekursiv mit einem Kennwort komprimieren und dann die unkomprimierte Datei in der Bash-Datei löschen.
Es gibt ZIP-Dateien und andere Dateien. Ich möchte die ZIP-Dateien nicht erneut komprimieren. Ich möchte nur die unkomprimierten Dateien komprimieren und den Dateinamen als komprimierten Dateinamen beibehalten.
Wenn der Dateiname beispielsweise lautet, aaa10.dat
muss der ZIP-Dateiname angegeben aaa10.zip
und die Datei mit einem Kennwort komprimiert werden.
Nach dem Komprimieren möchte ich die unkomprimierte Datei löschen.
[Verzeichnisaufbau]
dir1/aaa1.dat ... aaa10.dat
dir1/dir2/dir2_subdir1/aaa.zip, aaa.dat
dir1/dir3/dir3_subdir1/aaa1.dat ... aaa10.dat
dir1/dir3/dir3_subdir2/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip
dir1/dir3/dir3_subdir2/dir3_subdir2_subdir1/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip
Antwort1
Sie können dies mit einem ziemlich komplizierten find
Befehl tun, der alle „.dat“-Dateien findet und sie dann komprimiert. Aber es ist viel einfacher, den Zip-Teil in ein separates Skript zu packen:
find . -name '*.dat' -exec my-script {} \;
und my-script
(das in Ihrem stehen muss PATH
):
#!/bin/sh
zip -P my-password -m $(dirname $1)/$(basename $1 .dat).zip $1
Undmy-password
ist natürlich, was auch immer Sie wählen.