GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man alle Dateien in allen Unterverzeichnissen in Bash gzippt

Schleifen oder mehr als find sind nicht erforderlich und gzip :

find . -type f ! -name '*.gz' -exec gzip "{}" \;

Dies findet alle regulären Dateien in und unterhalb des aktuellen Verzeichnisses, deren Namen nicht mit .gz enden Erweiterung (d. h. alle Dateien, die noch nicht komprimiert sind). Es ruft gzip auf auf jede Datei einzeln.

Bearbeiten, basierend auf dem Kommentar von user unknown :

Die geschweiften Klammern ({} ) werden durch den Dateinamen ersetzt, der direkt als einzelnes Wort an den Befehl nach -exec übergeben wird wie Sie hier sehen können:

$ touch foo
$ touch "bar baz"
$ touch xyzzy
$ find . -exec echo {} \;

./foo
./bar baz
./xyzzy

find . -type f | while read file; do gzip "$file"; done

Ich bevorzuge gzip -r ./ was dasselbe tut, aber kürzer ist.


Linux
  1. So finden Sie eine Datei in Linux rekursiv in allen Verzeichnissen

  2. Wie finde ich alle Dateien, die sich auf eine Software beziehen?

  3. Wie finde ich alle Dateien, die einem bestimmten Benutzer in Unix/Linux gehören?

  4. Wie finde ich alle fest verlinkten Dateien in einem Dateisystem?

  5. gzip alle Dateien ohne sie zu löschen

So finden Sie Dateien unter Linux

So finden Sie Dateien in Debian

Wie finde ich unter Linux alle Dateien, die bestimmten Text enthalten?

Wie kann ich alle eindeutigen Dateien in zwei Verzeichnissen finden / auflisten?

So finden Sie alle Null-Byte-Dateien im Verzeichnis

Wie listet man alle Dateien einer Partition unter Linux auf?