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

3

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
    
por Mike 05.11.2016 / 17:50

3 respostas

4

usando prename (perl renamer)

prename 'if(/(.+?)-(.+?)-(.*)/){mkdir $2; $_="$2/$_"}' *.jpg
    
por 05.11.2016 / 18:12
6

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 .

    
por 05.11.2016 / 18:15
0

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

    
por 06.11.2016 / 12:19