GNU/Linux >> Znalost Linux >  >> Linux

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

Nejsou potřeba smyčky ani nic víc než find a gzip :

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

To najde všechny běžné soubory v aktuálním adresáři a pod ním, jejichž názvy nekončí .gz rozšíření (to znamená všechny soubory, které ještě nejsou zkomprimovány). Vyvolá gzip na každý soubor jednotlivě.

Upravit na základě komentáře z user unknown :

Složené závorky ({} ) jsou nahrazeny názvem souboru, který je předán přímo, jako jediné slovo, příkazu následujícímu za -exec jak můžete vidět zde:

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

./foo
./bar baz
./xyzzy

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

Dávám přednost gzip -r ./ který dělá totéž, ale je kratší.


Linux
  1. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  2. Jak zhustit podadresáře?

  3. Jak najít všechny soubory související se softwarem?

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

  2. Jak najít / vypsat všechny jedinečné soubory ve dvou adresářích?

  3. Jak najít všechny nulabajtové soubory v adresáři

  1. Jak najít všechny soubory vlastněné konkrétním uživatelem v Unixu/Linuxu?

  2. Jak najít všechny soubory větší než 1 GB v Linuxu?

  3. Jak najít všechny soubory/složky s oprávněním 777 v Linuxu?