Shell - Dateine anhand eines Musters sortieren in Unterverzeichnisse

Tripex

Lieutenant
Registriert
Dez. 2002
Beiträge
582
Okay, es wird etwas wild.

Ich habe ca 18.000 Dateien, die Wild verstreut in verschiedenen Ordnern auf einem NAS liegen. Zugang zu SSH/Shell und sudo sind vorhanden (Synology mit iPKG installiert.) und somit sollte es hier kein Problem geben.

Die Datein verfolgen ein Namensmuster:
Hauptdatei xyz (Jahr).xyz
Hauptdatei xyz (Jahr)-sources.xyz
Hauptdatei xyz (Jahr)-metas.xyz
...

Wie gesagt, wild gestreut in vielen Unterordnern und Ordnern.

Ziel ist es nun, alles zu sortieren in eigene Ordner nach dem Muster:
Hauptdatei xyz (Jahr)/Hauptdatei xyz (Jahr).xyz
Hauptdatei xyz (Jahr)/Hauptdatei xyz (Jahr)-sources.xyz
...

Ein Bonus wäre es, wenn das System auch noch einen Schritt weitergeht und einen Jahresordner erstellt basierend auf das Jahr, der in jeder Datei in der Klammer angegeben ist und nur in der Klammer und dadrin die Unterordner für die Dateien mit ihren zusatzdateien erstellt. Die Hauptdateien sind hauptsächlich .wav/.flac/.mp3/.ogg/.ac3 Dateien und die Supportdateien sind diverse Resourcen und Zusatzdateien, die zur Erstellung der einzelnen Audiodateien benötigt wurden. Desweiteren aber auch Bilddateien mit den dazugehörigen Resourcedaten wie Brushes/Aktions/Paletten etc. Die Endungen sollten hier ja keine Rolle spielen.

Da ich leider nicht wirklich eine Ahnung habe, wie ich das am besten bewerkstelligen soll, stell ich euch einfach mal die Frage, ob da jemand eine Idee hat. :)
 
find /src -type f -name '*2003.*' -print0 | xargs -0 -i mv {} /dest/2003

Glob pattern vorher prüfen mit:
find /src -type f -name '*2003.*' -ls oder find /src -type f -name '*2003.*' -print

Vor dem mv vorher prüfen mit:
find /src -type f -name '*2003.*' -print0 | xargs -0 -i echo mv {} /dest/2003 oder auch
find /src -type f -name '*2003.*' -print0 | xargs -0 -n 3 -i echo mv {} /dest/2003 (mehr Übersicht)

Dieser Editor macht Müll aus meinen Eingaben.
Jetzt passt es.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: emulbetsup und snaxilian
Vielen Dank für die Lösung des ersten Problems. Wieder was gelernt. ;)

Hm, auf den ersten Blick würde das ja nur in einen Jahresordner sortieren, egal wo es herkommt und es müsste für jedes Jahr manuell gemacht werden, was ja nicht tragisch wäre. Wie bekomme ich aber dann alle Dateien basierend ihres Teilnamens in eigene Unterordner? ;) Das war die grundlegende Frage. Ich glaube daran verzweifel ich noch. Sind ja nur 18.000 Dateien. seufz
 
Gib mal Beispiele. (Plötzlich taucht der Begriff "Teilname" auf, welcher vorher nicht definiert wurde)
 
Hatte ich eigentlich im Eingangsthread erwähnt ;)

Beispiel:
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016).wav
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016)-resources.pak
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016)-metas.zip
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016)/Auroa Reflections (2017).psd
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016)/Auroa Reflections (2017)-brushes.zip
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016)/Auroa Reflections (2017)-patterns.ptn
Projekt Aurora/Miserable Reflection/Hauptdatei xyz (2016)/Auroa Reflections (2017)-actions.atn

So die Quellausgangslage.

Ziel ist dann:
2016/Hauptdatei xyz (2016)/Hauptdatei xyz (2016).wav
2016/Hauptdatei xyz (2016)/Hauptdatei xyz (2016)-resources.pak
2016/Hauptdatei xyz (2016)/Hauptdatei xyz (2016)-metas.zip
2017/Auroa Reflections (2017)/Auroa Reflections (2017).psd
2017/Auroa Reflections (2017)/Auroa Reflections (2017)-brushes.zip
2017/Auroa Reflections (2017)/Auroa Reflections (2017)-patterns.ptn
2017/Auroa Reflections (2017)/Auroa Reflections (2017)-actions.atn

Hoffe nun wird mein Ziel deutlicher. ;)

Vielen Dank schonmal für deine Zeit, Brainpower und Mühen. :) Und wenn es nicht geht, dann geht es nicht. ^^
 
Dann nach *(2017)-actions.* suchen oder notfalls nach *(2017)*.
 
  • Gefällt mir
Reaktionen: Tripex
Okay, also alles händisch, auch kein Thema, bissl Handarbeit. Hatte gedacht eventuell gibts da auch was in *Unix. ;) Danke für deine Brainpower. :)
 
Man kann da was bauen, ist auch immer eine Frage von Nutzen vs. Aufwand. Dazu ist aber die Beschreibung hier zu schwammig.
 
Zurück
Oben