Usando o bash para encontrar o arquivo e duplicar com o novo nome?

0

Eu tenho uma grande coleção de músicas. Cada pasta do álbum tem um arquivo de arte do álbum chamado "album.jpg". Cada jukebox de música, servidor de streaming e tudo o que eu já usei foi capaz de analisar a arte do álbum e exibir essa arte. Acabei de adicionar um sistema Sonos e ele não irá analisar "album.jpg" ele só irá analisar "folder.jpg".

Eu gostaria de usar um script bash para encontrar todas as instâncias de "album.jpg" em uma estrutura hierárquica de pastas de Artist - > Album e duplicar o arquivo no mesmo local e nomeá-lo como "folder.jpg". Estou com problemas ao passar informações do find para o cp. Eu não consigo entender a sintaxe corretamente.

Obrigado pela ajuda.

    
por McGeek 06.03.2017 / 21:49

2 respostas

0

Execute este comando: find Music -name album.jpg -print0 | while read -r -d $'-print0' x; do cp "$x" "${x%/*}/folder.jpg"; done

Detalhes:

  • -r , -d $'${x%/*}' e / juntos garantem que os caminhos que contêm espaços em branco não sejam desconfigurados
  • $x significa remover o último /foo/bar/album.jpg e tudo o que o segue de /foo/bar (por exemplo, %code% se torna %code% )
por Joseph Sible 06.03.2017 / 22:10
0

Se a coleção estiver armazenada em um sistema de arquivos no estilo Unix, acho que eu usaria links simbólicos para algo como isto, por exemplo.

find path/to/musicfolder -name 'album.jpg' -execdir ln -s {} ./folder.jpg \;
    
por steeldriver 07.03.2017 / 00:27