GNU/Linux >> Znalost Linux >  >> Linux

Jak získat všechny soubory přesahující určitou velikost a smazat je

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


Linux
  1. Jak hledat soubory podle velikosti a přípony?

  2. Použijte Najít k nalezení určitého adresáře a odstranění všech souborů v něm kromě jednoho adresáře?

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

  1. Jak zjistím maximální velikost zásobníku?

  2. Jak mohu vidět velikost souborů a adresářů v linuxu?

  3. Jak mohu upravit všechny soubory vrácené funkcí find in vi v systému Linux?

  1. Jak rekurzivně vypisovat soubory a třídit je podle času úpravy?

  2. Jak získat skutečnou velikost adresáře (mimo du)?

  3. Získat velikost všech složek v adresáři