Eu tenho uma pasta do Google Fotos. Isto é de um takeout de fotos do Google. A maneira como a entrega funciona é que existem várias pastas com nomes de datas
➜ ~/Google Photos => tree |head -n 20
.
├── 1979-12-31
│ ├── icon-24x24.png
│ ├── icon-24x24.png.json
│ ├── icon_local_color.png
│ ├── icon_local_color.png.json
│ ├── metadata.json
│ ├── viewer-14.png
│ ├── viewer-14.png.json
│ ├── viewer-28.png
│ └── viewer-28.png.json
├── 2001-07-24
│ ├── heic0109a.jpg
│ ├── heic0109a.jpg.json
│ └── metadata.json
├── 2003-01-06
│ ├── ASPdotNET_logo.jpg
│ ├── ASPdotNET_logo.jpg.json
│ ├── darkBlue_GRAD.jpg
│ ├── darkBlue_GRAD.jpg.json
Gostaria de mover todos os arquivos que não terminam em json para uma nova pasta chamada ./all_photos
. O problema é que posso ter dois arquivos com o mesmo nome em pastas.
Por exemplo na pasta 1979-12-31
posso ter um arquivo chamado a.jpg
e na pasta 2001-07-24
também posso ter outro arquivo chamado a.jpg
. As soluções que examinei movem os arquivos, mas substituem ou ignoram se houver uma possível substituição. Gostaria de alterar os nomes dos arquivos conforme mostrado: 1979-12-31_a.jpg
e 2001-07-24_a.jpg
. Isso garantirá que não haja arquivos com o mesmo nome e, portanto, nenhuma substituição.
Estou em um servidor Linux e imagino que a melhor maneira de fazer isso seria por meio do comando find do Linux, mas não tenho certeza dos comandos exatos, então gostaria de uma ajuda.