Como classifico os arquivos em uma subpasta com base na parte do nome do arquivo?

Como classifico os arquivos em uma subpasta com base na parte do nome do arquivo?

Estes são os arquivos no diretório:

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

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

Eu gostaria de classificá-los em subpastas:

/Mustang
/Impala

Responder1

A resposta óbvia:

Basta criar os diretórios e colocar os arquivos neles.

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

Isso é chamadoglobulação de arquivo; é um recurso de shell.


Se você tiver um grande número de arquivos e precisar criar muitos diretórios diferentes para acomodá-los, tenteA resposta de JJoão.

Responder2

usando pré-nome (renomeador perl)

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

Responder3

Eu dividiria o nome do arquivo usando awk, awk {split $0, a, "-"; mkdir a[1]; mv $0 a[1]/}se você quiser renomear, você pode fazer isso com o programa mv

informação relacionada