bash: Alle Unterordner eines Ordners suchen und komprimieren

1918
m1k3y02

Wie kann man alle Unterordner eines Ordners finden und diese separat komprimieren?

Ordnerstruktur

./folder  -subfolder_1  -subfolder_2  -subfolder_3  

erwartetes Ergebnis:

./folder -subfolder_1.zip -subfolder_2.zip -subfolder_3.zip 

Ich habe folgendes versucht:

for i in .; do zip -r $i.zip $i; done; 

ergab eine ZIP- Datei mit allen Unterordnern

2

2 Antworten auf die Frage

3
zuberuber

Tatsächlich funktioniert die von m1k3y02 ( for i in *; do zip -r "$i.zip" $i; done) bereitgestellte Lösung nur, wenn das aktuelle Verzeichnis nur Unterverzeichnisse enthält.

Bessere Möglichkeit, nur Unterverzeichnisse zu finden und zu komprimieren:

for dir in ./* ;do if [[ -d $dir ]];then zip -r $.zip $dir fi done 

oder

find . -type d -maxdepth 1 -exec zip -r {}.zip {} \; 
0
m1k3y02

Lösung wie folgt ...

for i in *; do zip -r "$i.zip" $i; done;