Mein ~/Music/
Verzeichnis ist tatsächlich voll mit "leeren" Verzeichnissen, die ich bereinigen möchte. Ich sage "leer", weil diese Verzeichnisse tatsächlich Dateien enthalten, einige alte Titelbilddateien enthalten oder Thumbs.db files
.
Ich möchte rekursiv alle diese Verzeichnisse löschen, die keine Musikdateien oder andere Verzeichnisse enthalten.
Zum Beispiel ~ / Music / Audioslave / enthält viele Verzeichnisse mit Albumnamen und ohne Musikdateien, aber ich möchte es nicht löschen, da sich darin die Musikdateien befinden. Ich möchte jedoch ~ / Music / Audioslave / oldalbum / löschen, wenn das oldalbum-Verzeichnis weder Musikdateien noch andere Verzeichnisse enthält.
Antworten:
Ich habe dieses Beispiel auf SO mit dem Titel gefunden: Terminal - Alle Ordner löschen, die keine MP3-Dateien enthalten .
Beispiel
Beispieldaten.
Probelauf
Wenn ich es ausführen würde, würde es Folgendes löschen:
Andere Dateitypen
Sie können dies einfach erweitern, indem Sie
-name
dem zweiten Befehl find im Skript weitere Argumente hinzufügen . Beispiel zum Hinzufügen von.wav
Dateien:Das sagt
*.mp3
ODER*.wav
. So fügen Sie mehr oder andere hinzu:Ich bin sicher, dieser Block könnte komprimiert werden, wenn Sie viel mehr Dateitypen hätten, wenn Sie alternativ zu wechseln
find
.quelle
Eine lustige Lösung beinhaltet ein
find
Inside afind
, aber auf sicherere Weise als die akzeptierte Antwort (ich persönlich mag es nicht, die Ausgabe eines Befehls zu analysieren, zu seinls
oderfind
, insbesondere ohne Vorsichtsmaßnahmen). Der folgende Befehl drucken die Ordner , die keine enthalten Musik - Datei (hier Musikdateieinrichtung hat eine Erweiterungmp3
,flac
,ogg
,wav
oderm4a
, aber ich fühle mich frei , um einige mehr hinzugefügt werden ):Sie sollten dies auf Ihrem System versuchen. Wenn Sie mit dem Verhalten zufrieden sind, ersetzen Sie das Finale
-print
durch-exec rm -rfv -- {} \;
Die Art und Weise, wie die Dateinamen hier verwendet werden, macht diese Methode 100% sicher in Bezug auf Dateinamen mit lustigen Symbolen (dh Leerzeichen, Anführungszeichen, Zeilenumbrüche, nachfolgende Zeilenumbrüche, führende und nachfolgende Leerzeichen usw.).
quelle
Versuchen Sie etwas in dieser Richtung (ungetestet):
Ich bin mir nicht sicher, wie viele Muscheln das
*/
Globbing unterstützen. Zumindest Bash und Zsh.quelle