Altera a estrutura da pasta (da coleção de músicas) com base nos nomes das pastas (porque o Foobar2000 quebrou)

0

Prezada comunidade de superusuários, deixe-me começar dizendo que tenho pouca experiência em programação, portanto peça desculpas antecipadamente para o caso de minha pergunta parecer um pouco estranha.

Recentemente, tentei reestruturar as pastas da minha coleção de músicas. Antes, todos os álbuns eram coletados em uma pasta dedicada, então a pasta base da coleção continha pastas com nomes parecidos com

BASE\'<Artist> - [<year>] <album title>'

Eu queria alterar a estrutura da coleção de forma que os arquivos fossem armazenados em pastas ao longo da "regra"

BASE\'<Artist>'\'[<year>] <album title>'

Foobar2000 conseguiu criar essas novas pastas para a maioria dos álbuns e mover os mp3's para lá. No entanto, infelizmente, o programa caiu no meio do processo e as pastas antigas ainda existem. Essas pastas antigas ainda contêm capa, etc. Agora tenho, digamos, duas pastas por álbum: a subpasta do álbum do artista com todos os mp3s e a pasta original com a capa.

Se ele não tivesse caído, o Foobar2000 teria movido o conteúdo all para as novas subpastas e excluído os originais. Agora estou querendo saber se posso terminar o trabalho com algo como um script de shell (que eu nunca usei antes na minha vida)?

Eu acho que o script teria que percorrer todas as pastas no BASE e

  1. Teste se o nome da pasta tem a estrutura '<Artist> - [<year>] <album title>' - por exemplo, testando se ela contém a parte do meio ' - '
  2. Teste se a pasta '<Artist>'\'[<year>] <album title>' existe e, em caso afirmativo, mova todo o conteúdo restante para lá
  3. Excluir a pasta original '<Artist> - [<year>] <album title>'

Isso é algo que um shell script poderia alcançar? Qualquer ajuda ou dicas seriam muito apreciadas.

    
por Turtle 05.01.2017 / 18:53

1 resposta

0

Sim, este é exatamente o tipo de coisa que você pode fazer com um script de shell. Você já fez 90% do trabalho exatamente para descobrir o que seu algoritmo precisa fazer. Deixe-me preencher alguns dos espaços em branco.

O

Cygwin lhe dará um ambiente de script bash. Esta resposta sugere como iterar uma lista de coisas no bash. O grep testará a estrutura do nome da pasta e extrairá as partes de interesse (por exemplo, artista nome). mkdir criará diretórios (você pode investigar a opção -p ) e rmdir irá removê-los. O mv irá, na verdade, mover os arquivos de um diretório para outro.

    
por 29.01.2017 / 18:06