GNU/Linux >> Linux Esercitazione >  >> Linux

gzip tutti i file senza eliminarli

find . -type f | \
while read -r x
do
  gzip -c "$x" > "$x.gz"
done

Il -c spinge il risultato su stdout e mantiene solo l'originale. Lo svantaggio è che devi trovare tu stesso i file. Per un attraversamento più sofisticato, puoi usare find(1) , tuttavia, come sopra:. ricerche a partire dalla directory corrente e -type f restituisce il nome di ogni file regolare.


find . -type f -not \( -name '*.gz' -or -name '*[~#]' \) -exec sh -c 'gzip -c "{}" > "{}.gz"' \;

Puoi facilmente cambiarlo per includere ciò che vuoi comprimere ( -name '*.txt -or -name '*.html ecc.) invece di come adesso, escludendo alcuni file (file già compressi, di backup e temporanei).

Gestisce bene anche gli spazi nel nome del file.

Cambia gzip a echo gzip per il test. Oppure salta tutta la parte -exec.

Modifica: Oh, ho dimenticato di dire che questo non controlla se <target>.gz esiste già. Questo può o non può essere un problema.

Modifica2: Ok, qui andiamo con qualcosa che controlla il file esistente. Se questo può essere voluto. Scusate l'unicità.

while read file; do if [ ! -f "$file.gz" ]; then echo "Compressing $file"; gzip -c "$file" > "$file.gz"; else echo "Not overwriting $file.gz";  fi  done < <(find . -type f -not \( -name '*.gz' -or -name '*[~#]' \))

Il mio find -foo forse non è quello che potrebbe essere, potrebbe benissimo essere possibile saltare direttamente in find.


gzip -k opzione

gzip 1.6 (giugno 2013) ha aggiunto -k, --keep opzione, quindi ora puoi:

gzip -kr .

e non eliminerà i tuoi file originali.

Trovato su:https://unix.stackexchange.com/questions/46786/how-to-tell-gzip-to-keep-original-file


Linux
  1. Ottieni l'elenco di tutti i file per maschera nel terminale?

  2. Come trovare tutti i file sparsi in Linux

  3. Come ottenere tutti i file che superano determinate dimensioni ed eliminarli

  4. Trova tutti i file con nome contenente una stringa

  5. Trova più file e rinominali in Linux

Come trovare file duplicati in Linux e rimuoverli

Come gzippare tutti i file in tutte le sottodirectory in bash

Trova tutti i file a zero byte nella directory e nelle sottodirectory

Elenca tutti i file di immagini grafiche con find?

Elimina i file corrispondenti in tutte le sottodirectory

Come trovare tutti i file a zero byte nella directory