Podobné jako odpověď exec rm, ale nepotřebuje proces pro každý nalezený soubor:
find . -size +100k -delete
One-liner:
find . -size +100k -exec rm {} \;
První část (find . -size +100k ) hledá všechny soubory počínaje aktuálním adresářem (. ) přesahující (+ ) 100 kB (100k ).
Druhá část (-exec rm {} \; ) vyvolal daný příkaz u každého nalezeného souboru. {} je zástupný symbol pro aktuální název souboru, včetně cesty. \; pouze označí konec příkazu.
Nezapomeňte vždy zkontrolovat, zda jsou vaše kritéria filtrování správná, spuštěním raw find :
find . -size +100k
Nebo si dokonce před odstraněním můžete vytvořit záložní kopii:
find . -size +100k -exec cp --parents {} ~/backup \;
python je nainstalován na všech unixových OS, tak proč ho nepoužít místo bash?
Vždy mi přijde python čitelnější než awk a sed magie.
Toto je kód pythonu, který bych napsal:
import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = Kb*Kb
Gb = Kb*Kb*Kb
for f in os.listdir("."):
if os.stat(f).st_size>100*Kb:
os.remove(f)
A toto je jednořádková verze s python -c
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
A pokud chcete použít vyhledávání rekurzivně, podívejte se na toto