Wie sortiere ich Dateien basierend auf dem Dateinamenteil in einen Unterordner?

Wie sortiere ich Dateien basierend auf dem Dateinamenteil in einen Unterordner?

Dies sind die Dateien im Verzeichnis:

Ford-Mustang-001.jpg
Ford-Mustang-002.jpg
Ford-Mustang-003.jpg

Chevy-Impala-001.jpg
Chevy-Impala-002.jpg
Chevy-Impala-003.jpg

Ich möchte diese in Unterordner sortieren:

/Mustang
/Impala

Antwort1

Die offensichtliche Antwort:

Erstellen Sie einfach die Verzeichnisse und legen Sie die Dateien dort ab.

mkdir Mustang Impala
mv *Mustang*.jpg Mustang/
mv *Impala*.jpg Impala/

Das nennt manDatei-Globbing; es ist eine Shell-Funktion.


Wenn Sie eine große Anzahl von Dateien haben und viele verschiedene Verzeichnisse erstellen müssen, um sie unterzubringen, versuchen SieJJoaos Antwort.

Antwort2

mit Prename (Perl-Renamer)

prename 'if(/(.+?)-(.+?)-(.*)/){mkdir $2; $_="$2/$_"}' *.jpg

Antwort3

Ich würde den Dateinamen mit awk aufteilen. awk {split $0, a, "-"; mkdir a[1]; mv $0 a[1]/}Wenn Sie ihn umbenennen möchten, können Sie dies mit dem Programm mv tun.

verwandte Informationen