Linux-Befehlszeile: Jede Datei wird rekursiv mit einer komprimierten Version überschrieben.

1531
studiohack
______________ myFolder 

Was kann ich durch _____________ ersetzen, um jede Datei rekursiv zu starten, die bei myFolder beginnt, und die Datei von gzip überschrieben werden soll (die gzip-Datei in den ursprünglichen Dateinamen umbenennen)?

1

3 Antworten auf die Frage

4
Matt Beldyk

Sie könnten es auch versuchen

 find myFolder -type f -exec gzip {} \; -exec mv {}.gz {} \; 
Aha, ich habe mehrere exec-Anrufe in find gefunden, ich mag es vor 14 Jahren 0
2

Versuchen:

find myFolder -type f -exec gzip {} + 
Beachten Sie, dass dadurch Ihre Dateien von myFile in myFile.gz umbenannt werden vor 14 Jahren 0
1
Wes Mason

Ein einfaches, nicht sehr elegantes Bash-Skript besteht darin, einfach zu cd einzulesen, sie alle in einer Schleife zu kopieren und zurückzuschicken (gzip entfernt standardmäßig die nicht komprimierte Datei):

#!/bin/bash cd myFolder for f in `find ./ -type f` do gzip $f mv $f.gz $f done 

Legen Sie das in eine Datei mit dem Namen "gzip_and_rename.sh", zum Beispiel chmod -775, und führen Sie es wie ./gzip_and_rename.sh aus (wenn Sie von myFolder aus laufen, entfernen Sie die Zeile "cd myFolder" aus dem Skript).

Und ja, ich weiß, dass Backticks böse sind, aber wie gesagt, das ist nur ein kurzes Hack-Skript. vor 14 Jahren 0
Warum sind Backticks böse? Wodurch ersetzen Sie sie? vor 14 Jahren 0
Siehe http://www.commandlinefu.com/commands/view/1387/backticks-are-evil vor 14 Jahren 0