usando prename (perl renamer)
prename 'if(/(.+?)-(.+?)-(.*)/){mkdir $2; $_="$2/$_"}' *.jpg
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
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 é chamado de arquivo globbing ; é um recurso de shell.
Se você tiver um grande número de arquivos e precisar criar vários diretórios diferentes para acomodá-los, tente a resposta de JJoao .
Eu iria dividir o nome do arquivo usando awk awk {split $0, a, "-"; mkdir a[1]; mv $0 a[1]/}
se você quiser renomear você poderia fazer isso com o programa mv
Tags command-line mv files patterns