Ordnerstruktur (der Musiksammlung) basierend auf Ordnernamen ändern (weil Foobar2000 zusammengebrochen ist)

484
Turtle

Liebe Superuser-Community, lassen Sie mich zunächst sagen, dass ich sehr wenig Programmiererfahrung habe. Entschuldigen Sie sich bitte im Voraus, falls meine Frage ein wenig seltsam erscheinen mag.

Kürzlich habe ich versucht, die Ordner meiner Musiksammlung neu zu ordnen. Zuvor wurden alle Alben in einem dedizierten Ordner gesammelt. Der Basisordner der Sammlung enthielt Ordner mit dem Namen

BASE\'<Artist> - [<year>] <album title>' 

Ich wollte die Struktur der Sammlung so ändern, dass die Dateien in Ordnern entlang der "Regel" gespeichert werden.

BASE\'<Artist>'\'[<year>] <album title>' 

Foobar2000 hat es geschafft, diese neuen Ordner für die meisten Alben zu erstellen und die MP3-Dateien dort zu verschieben. Leider stürzte das Programm jedoch mitten im Prozess ab und die alten Ordner sind noch vorhanden. Diese alten Ordner enthalten immer noch Covercover usw. Ich habe jetzt beispielsweise zwei Ordner pro Album: Der Album-Unterordner des Künstlers mit allen MP3-Dateien und der Originalordner mit Coverbildern.

Wenn es nicht abgestürzt wäre, hätte Foobar2000 den gesamten Inhalt in die neuen Unterordner verschoben und die ursprünglichen gelöscht. Ich frage mich jetzt, ob ich den Job mit einem Shell-Skript beenden kann (das ich noch nie in meinem Leben verwendet habe).

Ich denke, das Skript müsste über alle Ordner in BASEund iterieren

  1. Testen Sie, ob der Ordnername die Struktur hat '<Artist> - [<year>] <album title>'- zum Beispiel, ob er den Mittelteil enthält' - '
  2. Testen Sie, ob der Ordner '<Artist>'\'[<year>] <album title>'vorhanden ist, und verschieben Sie gegebenenfalls den restlichen Inhalt dorthin
  3. Löschen Sie den ursprünglichen Ordner '<Artist> - [<year>] <album title>'

Ist dies etwas, das ein Shell-Skript erreichen könnte? Jede Hilfe oder Hinweise wäre sehr dankbar.

0
Ja, ein Shell-Skript kann dies. Beachten Sie jedoch, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 7 Jahren 0
@DavidPostill Danke! Ich entschuldige mich, wenn ich den Eindruck erwecke, die Community missbrauchen zu wollen, indem ich eine fertige Lösung erwartete. Das war sicherlich nicht meine Absicht. Ich gebe zu, dass ich noch nie so etwas codiert habe - ich habe erst gestern Shell-Skripte kennengelernt. Was ich sah, sah aus wie eine ziemlich steile Lernkurve für einen unerfahrenen Menschen wie mich, daher wollte ich vor allem sicherstellen, dass ein Shell-Skript tatsächlich eine Lösung für mein kleines Problem bietet, bevor ich mich mit dem Studium der Shell-Skripts beschäftige von Grund auf neu. Turtle vor 7 Jahren 1

1 Antwort auf die Frage

0
Hugh W

Ja, genau das können Sie mit einem Shell-Skript machen. Sie haben bereits 90% der Arbeit geleistet, um herauszufinden, was Ihr Algorithmus tun muss. Lassen Sie mich einige der Lücken ausfüllen.

Cygwin gibt Ihnen eine Bash-Skriptumgebung. Diese Antwort schlägt vor, wie eine Liste der Dinge in bash durchlaufen wird. grep testet die Struktur des Ordnernamens und extrahiert die interessierenden Teile (zB Künstlername). mkdir erstellt Verzeichnisse (möglicherweise möchten Sie die -pOption untersuchen) und rmdir entfernt sie. mv verschiebt tatsächlich Dateien von einem Verzeichnis in ein anderes.

Vielen Dank! Das ist genau die Art von Informationen, auf die ich gehofft hatte. Ich werde mich definitiv damit beschäftigen. Turtle vor 7 Jahren 0
Bitte. Wenn Sie das Gefühl haben, Ihre Frage beantwortet zu haben, markieren Sie meine Antwort als akzeptiert. Das belohnt mich mit den leckeren Rufpunkten, nach denen ich mich sehne, und bedeutet, dass Ihre Frage nicht mehr in der Liste der unbeantworteten Fragen angezeigt wird, an der ich sie gefunden habe. Hugh W vor 7 Jahren 0
Ich hatte es nicht vergessen und war nur zögerlich, weil ich Ihren Vorschlag noch nicht in Aussicht gestellt hatte, aber ich bin sehr zuversichtlich, dass Ihre Antwort alles enthält, was ich brauche. Turtle vor 7 Jahren 0