Suchen und löschen Sie alle Dateien ohne Dateierweiterung in einem Ordner und dessen Unterordnern

16

Ich habe einen Ordner ohne ca. 500 Unterverzeichnisse. Es ist viel Müll darin und ich möchte es aufräumen.

Ich habe bereits bestimmte Dateitypen, die ich nicht möchte, wie Bilder, mit diesem Befehl gelöscht:

find . -mindepth 1 -iname "*.jpg" -type f -delete

Jetzt möchte ich jedoch alle Dateien ohne Dateierweiterung löschen. Dateien wie "Einkaufsliste" anstelle von "Einkaufsliste.txt"

Ich habe den folgenden Befehl ausprobiert, aber es hat nicht funktioniert:

find . -mindepth 1 ! -iname "*.*" -type f -delete
etsnyman
quelle

Antworten:

20

Versuche dies:

find . -type f  ! -name "*.*"  -delete

Beachten Sie jedoch, dass der oben Willen nicht löschen Dateien , deren Namen Ende in ein ., zum Beispiel foo.. Um auch diese zu löschen, verwenden Sie stattdessen Folgendes:

find . -type f  ! -name "*.?*" -delete
terdon
quelle
Der zweite Befehl war meine nächste Frage. Vielen Dank! Ich könnte auch find . -type f ! -name "*?.*" -deleteschreiben, um Dateien wie ".trash" oder was auch immer zu entfernen, das ich nicht brauchte. Keine Sorge - es war nicht mein Home-Verzeichnis, also habe ich keine Konfigurationsdateien verloren.
etsnyman
5
@etsnyman Besser zuerst den Befehl ohne die -deleteOption testen !
Radu Rădeanu
@etsnyman nicht ganz, um Dateien, die mit einem Punkt beginnen, zu entfernen, verwenden Sie find . -type f -name ".*" -deletedie in Ihrem letzten Kommentar wird auch Dateien ohne Erweiterungen löschen. Und was Radu gesagt hat! Zuerst testen!
Terdon
@ RaduRădeanu Ich habe es tatsächlich zuerst in einem Dummy-Verzeichnis mit leeren Dateien getestet ...
etsnyman
@terdon Was bedeutet das Fragezeichen in Ihrem zweiten Befehl?
Avinash Raj
2

Du könntest benutzen:

find . -type f ! -name "*.*" -delete
Radu Rădeanu
quelle