Reordenar arquivos dentro da pasta

2

Eu tenho cerca de 30 mil músicas em mp3. Eu já organizei / etiquetei eles com o Musicbrainz Picard. Mas Picard fez um excesso de pastas e subpastas por causa das tags.

O que eu preciso agora é de um script para ler cada subpasta e mover todos os arquivos de mp3 dentro das pastas da subpasta para a subpasta principal. Por exemplo:

 Music -  
   Offspring -
      Album 1 - 20 songs
      Album 2 - 30 songs
      Album 3 - 5 Songs
         Folder 1 - 2 Songs
         Folder 2 - 3 Songs
   Journey -
      Song Pack 1 - 2 Songs
           Packy 1 - 15 Songs
           Packy 2 - 20 Songs
           Packy 3 - 7 Songs
      Album 2 - 20 songs
      Whatever 3 - 10 Songs

Depois de executar o script, eles ficariam assim:

Music -    
   Offspring - All Songs inside THIS folder. Not inside subfolders of Offspring.  
   Journey - All Songs inside THIS folder. Not inside subfolders of Journey.   

E assim por diante ..

Assim, todas as músicas de cada subpasta de cada grupo musical não devem ter mais subpastas e todas as músicas dentro de suas subpastas subseqüentes devem ser movidas para a subpasta principal do grupo de músicas.

Então, quando eu verifico Music e vejo os Bee Gees, eu sei que todas as músicas estão lá e não dentro de uma subpasta de Bee Gees.

NOTA - Em alguns casos, existem mais de 20 subpastas recursivas. Um exemplo é: Music/Lady Gaga/1/Album/Lady Gaga/2/2/2/1/1/1/1/3/3Album 2/Lady Gaga/1/1/1/SONG.mp3 . Neste caso eu quero estes dentro de Music/Lady Gaga e para eliminar o resto das pastas.

    
por Luis Alvarado 05.06.2011 / 23:05

4 respostas

3

Sugiro que o script a seguir (testado, mas sem garantia) seja executado a partir do diretório principal, no qual todos os diretórios de artistas residem:

#!/bin/bash

for f in *; do
  find "$f" -mindepth 2 -type f -exec mv --backup=numbered -t "$f" {} +
done

for f in *; do
  find "$f" -mindepth 1 -type d
done |
  sort -r |
  while read d; do
    rmdir "$d"
  done

Ele também cuida de duplicatas e remoção de subdiretórios vazios.

    
por enzotib 16.06.2011 / 09:25
3

Dê uma olhada em Easytag .

sudoapt-getinstalleasytag

A opção de scanner (Scanner - > Renomear arquivos e diretório) é capaz de reorganizar seus arquivos com base nos parâmetros da tag de identificação.

Exemplo:

Artist/Track# - track name.ogg': '%a/%n - %t

resultaria em:
Príncipe / 07 - Purple Rain.ogg

    
por Rinzwind 05.06.2011 / 23:12
1

Se você tiver espaço suficiente para fazer backup de sua música antes de fazer isso, convém fazê-lo. Eu testei, mas não tem garantia - se quebrar, você consegue manter todas as peças.

Eu fiz isso sob a suposição (a partir de sua descrição) que você tem uma pasta principal subdividida por artista, subdividida por álbum. Se isso corresponder à sua configuração, continue.

Em um terminal, entre no seu diretório de músicas e execute este comando (no bash):

for j in * ; do (cd "$j" ; (for i in * ; do (cd "$i" ; find . -name \*.[mM][pP]3 -exec mv {} . \; ) ; done)) ; done

Se você tiver dúvidas, basta perguntar.

    
por zpletan 16.06.2011 / 01:25
0

Você pode modificar as configurações do Picard para que ele não crie essa hierarquia de diretórios para começar - é possível que ele dependa desses arquivos permanecendo onde eles foram deixados.

    
por jpaugh 21.06.2011 / 04:48