Eu tenho uma pasta com 40 subpastas cada uma contendo 20~21 jpg todos nomeados 01.jpg -> 20.jpg As subpastas são nomeadas Nature_Set_01 to Nature_Set_40
Eu gostaria de ter todas as fotos movidas em uma pasta com nomes como Nature_Set_01_01.jpg para Nature_Set_40_20.jpg ou algo assim, eu realmente não me importo com os nomes.
Aqui está uma árvore se não estou claro:
├── Nature_Set_01
│ ├── 01.jpg
│ ├── 02.jpg
│ ├── ...
│ └── 20.jpg
├── Nature_Set_02
│ ├── 01.jpg
│ ├── 02.jpg
│ ├── ...
│ ├── 21.jpg
├── ...
├── Nature_Set_40
│ ├── 01.jpg
│ ├── 02.jpg
│ ├── ...
│ ├── 20.jpg
Eu não sou um guru do bash, tentei entender como fazer isso, mas falhei. Alguém pode ajudar?
Execute este script no diretório pai.
Ele cria o diretório
folder
e, em seguida, percorre os arquivos correspondentes
Nature_Set_*/*.jpg
, movendo cada arquivo encontrado para"folder/${file/\//_}"
.Esta última construção,
${file/\//_}
, é uma forma especial de expansão de parâmetros , cujo esqueleto é${parameter/pattern/replacement}
. Como/
já é o delimitador da construção, ele precisa ser escapado para que apareça empattern
. Assim/
é substituído por_
no nome do arquivo.Exemplo:
Nature_Set_01/01.jpg
torna -seNature_Set_01_01.jpg
.