Wie lösche ich alle Dateien, die kleiner als eine bestimmte Größe sind, in allen Unterordnern?


88

Ich habe einen Ordner mit vielen Unterordnern, die kleine TIF-Dateien (weniger als 160 KB) enthalten, die zu größeren PDF-Dateien zusammengefügt wurden, zusammen mit einigen großen mehrseitigen TIF-Dateien.

Ich möchte alle kleinen tif-Dateien löschen, ohne die größeren Dateien (tif oder pdf) zu löschen und die Verzeichnisstruktur beizubehalten. Wie gehe ich unter Linux über die Befehlszeile vor?

Antworten:


155
find . -name "*.tif" -type 'f' -size -160k -delete

Führen Sie den Befehl aus, ohne -deletezuvor zu überprüfen, ob die richtigen Dateien gefunden wurden.

Beachten Sie das -vorher 160k. Bedeutet 160kgenau 160 Kilobyte. -160kbedeutet kleiner als 160 Kilobyte. +160kbedeutet größer als 160 Kilobyte.

Die -type 'f'Kräfte der Befehl nur wirken auf Dateien und Verzeichnisse überspringen. Dies würde Fehler vermeiden, wenn der Pfad Ordner mit Namen enthält, die dem Muster entsprechen *.tif.

Wenn Sie in Bytes filtern Größe wollen (wie in 160 Bytes statt 160 Kilobyte) , dann müssen Sie es wie folgt schreiben: 160c. Wenn Sie nur schreiben 160, wird dies als 160 * 512 Byte interpretiert. Dies ist eine merkwürdige Anforderung von POSIX. Weitere Informationen finden Sie hier: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


Die Ubuntu-Manpage scheint dies zu erwähnen. Direkt unter dem Abschnitt "TESTS": Numerische Argumente können als + n für mehr als n, -n für weniger als n, n für genau n angegeben werden.
— jdg

1
Vielen Dank. Es ist mir nicht in den Sinn gekommen, dass sich die Informationen an einer anderen Stelle in der Manpage befinden.
— Lesmana

Schön, dass dieser Befehl auch rekursiv funktioniert. Mein Anwendungsfall wäre, TXT-Dateien unter 12 KB zu löschen.
— So,

kein sudo nötig?
— Jean-François Gagnon

11
Für Größen in Bytes geben Sie 50c an, nicht 50b oder 50!
— Evengard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.