So komprimieren Sie Unterverzeichnisdateien rekursiv mit einem Passwort

So komprimieren Sie Unterverzeichnisdateien rekursiv mit einem Passwort

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.datmuss der ZIP-Dateiname angegeben aaa10.zipund 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 findBefehl 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-passwordist natürlich, was auch immer Sie wählen.

verwandte Informationen