Simile alla risposta exec rm, ma non necessita di un processo per ogni file trovato:
find . -size +100k -delete
Una riga:
find . -size +100k -exec rm {} \;
La prima parte (find . -size +100k
) cerca tutti i file a partire dalla directory corrente (.
) eccedente (+
) 100 kByte (100k
).
La seconda parte (-exec rm {} \;
) ha richiamato il comando dato su ogni file trovato. {}
è un segnaposto per il nome del file corrente, incluso il percorso. \;
segna solo la fine del comando.
Ricordati di controllare sempre se i tuoi criteri di filtraggio sono corretti eseguendo find
non elaborato :
find . -size +100k
Oppure potresti anche fare una copia di backup prima di eliminare:
find . -size +100k -exec cp --parents {} ~/backup \;
python è installato su tutti i sistemi operativi basati su unix, quindi perché non usarlo al posto di bash?
Trovo sempre Python più leggibile di awk
e sed
magia.
Questo è il codice Python che avrei scritto:
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)
E questa è la versione di una riga con python -c
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
E se vuoi applicare la ricerca in modo ricorsivo, guarda questo