GNU/Linux >> Znalost Linux >  >> Linux

gzip všechny soubory bez jejich smazání

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

-c posune výsledek na stdout a ponechá originál sám. Nevýhodou je, že si soubory musíte najít sami. Pro sofistikovanější procházení můžete použít find(1) , nicméně jako výše:. prohledává od aktuálního adresáře a -type f vrátí název každého běžného souboru.


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

Můžete to snadno přepnout a zahrnout to, co chcete komprimovat ( -name '*.txt -or -name '*.html atd.) místo jako nyní, s výjimkou některých souborů (již komprimovaných, záložních a dočasných souborů).

Dobře si poradí i s mezerami v názvu souboru.

Změňte gzip na echo gzip pro testování. Nebo přeskočte část -exec dohromady.

Upravit: Oh, zapomněl jsem zmínit, že to nekontroluje, zda <target>.gz již existuje. To může, ale nemusí být problém.

Úprava2: Dobře, tady je něco, co kontroluje existující soubor. Pokud je to možné. Omlouvám se za jednotvárnost.

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 '*[~#]' \))

Můj find -foo možná není to, co by mohlo být, může být velmi dobře možné přeskočit přímo v find.


gzip -k možnost

gzip 1.6 (červen 2013) přidal -k, --keep možnost, takže nyní můžete:

gzip -kr .

a nesmaže vaše původní soubory.

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


Linux
  1. Získat seznam všech souborů podle masky v terminálu?

  2. Jak najít všechny řídké soubory v Linuxu

  3. Jak najít všechna sériová zařízení (ttyS, ttyUSB, ..) v Linuxu bez jejich otevření?

  1. Jak najít všechny soubory končící na .rb s Linuxem?

  2. Najít soubory a rozbalit je (s mezerami)

  3. Jak gzipovat všechny soubory ve všech podadresářích v bash

  1. Najděte všechny nulabajtové soubory v adresáři a podadresářích

  2. Vypsat všechny soubory grafických obrázků s find?

  3. Najděte všechny soubory starší než jedna minuta