Ähnlich wie die Antwort von exec rm, benötigt aber keinen Prozess für jede gefundene Datei:
find . -size +100k -delete
Einzeiler:
find . -size +100k -exec rm {} \;
Der erste Teil (find . -size +100k
) sucht nach allen Dateien ab dem aktuellen Verzeichnis (.
) über (+
) 100 kByte (100k
).
Der zweite Teil (-exec rm {} \;
) hat den angegebenen Befehl für jede gefundene Datei aufgerufen. {}
ist ein Platzhalter für den aktuellen Dateinamen, einschließlich Pfad. \;
markiert nur das Ende des Befehls.
Denken Sie daran, immer zu überprüfen, ob Ihre Filterkriterien korrekt sind, indem Sie raw find
ausführen :
find . -size +100k
Oder Sie können sogar eine Sicherungskopie erstellen, bevor Sie Folgendes löschen:
find . -size +100k -exec cp --parents {} ~/backup \;
Python ist auf allen Unix-basierten Betriebssystemen installiert, warum also nicht statt Bash verwenden?
Ich finde Python immer besser lesbar als awk
und sed
Magie.
Dies ist der Python-Code, den ich geschrieben hätte:
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)
Und dies ist die Einzeiler-Version mit python -c
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
Und wenn Sie die Suche rekursiv anwenden möchten, siehe hier