Meine Festplatte ist in einem Durcheinander, also habe ich beschlossen, eine Bereinigung durchzuführen. Als Teil davon möchte ich alle Ordner, die Musik enthalten, in einem zusammenführen. Was ich tun möchte, ist, auf meinem Laufwerk nach * .mp3 und * .aac zu suchen und den Namen der Ordner abzurufen. Dann möchte ich alle doppelten Ordnernamen entfernen und in einem letzten Schritt nur die Stammverzeichnisse greifen. Es fällt mir schwer, das genau zu erklären. Hier ist ein Bild eines Beispielbaums:
root1
|--folder1
|--sub1
|--file1.mp3
|--file2.aac
|--sub2
|--sub3
|--file3.mp3
|--file4.aac
|--folder2
| ...contains photos and documents (no mp3/aac)...
root2
|--folder3
|--file4.mp3
|--file5.aac
|--folder4
|--file6.mp3
Für dieses Beispiel ist meine gewünschte Ausgabe root1/folder1 root2/folder3 root2/folder4
.
Da ich nur begrenzte Kenntnisse über Bash- und UNIX-Tools habe, habe ich keine Ahnung, wie das geht. Gibt es einen Weg, dies zu erreichen? Ich bin in Ordnung, wenn Ihre Lösung Funktionen find
, aber es wäre viel besser, wenn locate
stattdessen verwendet wird.
Antworten:
Gehen Sie in jeden der letzten Ordner der obersten Ebene und verschieben Sie alle .mp3- oder .aac-Dateien unter diesem Ordner in den aktuellen Ordner. Entfernen Sie dann die jetzt leeren Ordner. Versuchen Sie Folgendes:
Es werden Fehler beim Versuch angezeigt, nicht leere Ordner in rmdir zu speichern. Die leeren Ordner werden jedoch entfernt.
Wenn Sie nur wissen möchten, welche Ordner der obersten Ebene Unterordner mit MP3- oder AAC-Dateien enthalten:
Suchen Sie alle .mp3- oder .aac-Dateien, die eine Reihe von Zeilen wie "./root2/folder3/file4.mp3" zurückgeben. Entfernen Sie dann mit cut alles außer den ersten drei Teilen des Pfads "./root2/folder3". Verwenden Sie abschließend sort -u, um alle Duplikate zu verwerfen.
quelle
Suchen Sie alle Dateien, die auf mp3 oder aac enden, entfernen Sie den Dateinamen mit sed und drucken Sie nur ein Mal in jedem Ordner.
quelle