GNU/Linux >> Linux Esercitazione >  >> Linux

Come gzippare tutti i file in tutte le sottodirectory in bash

Non c'è bisogno di loop o altro che find e gzip :

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

Questo trova tutti i file regolari dentro e sotto la directory corrente i cui nomi non terminano con .gz estensione (ovvero tutti i file che non sono già compressi). Invoca gzip su ciascun file individualmente.

Modifica, basata sul commento di user unknown :

Le parentesi graffe ({} ) vengono sostituiti con il nome del file, che viene passato direttamente, come una singola parola, al comando che segue -exec come puoi vedere qui:

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

./foo
./bar baz
./xyzzy

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

Preferirei gzip -r ./ che fa la stessa cosa ma è più breve.


Linux
  1. Come trovare tutti i file relativi a un software?

  2. Come trovare tutti i file di proprietà di un utente specifico in Unix/Linux?

  3. Come trovare tutti i file di dimensioni superiori a 1 GB in Linux?

  4. Come trovare tutti i file/cartelle con l'autorizzazione 777 in Linux?

  5. Come trovare tutti i file sparsi in Linux

Come trovare file in Linux

Come trovare un file in Linux in tutte le directory in modo ricorsivo

Come condensare le sottodirectory?

Come trovare file in Debian

Come posso trovare tutti i file hardlink su un filesystem?

gzip tutti i file senza eliminarli