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