Mover subdiretórios um nível acima e renomear

0

Estou tentando usar o Cygwin para reorganizar minha pasta de músicas. Atualmente está no formato iTunes

{Artist}/{Album}/Song ##.mp3

Eu quero copiar as pastas do álbum para a pasta pai e adicionar o nome do artista, então

~/{Artist}/{Album} torna-se ~/{Artist} - {Album}

mas estou tendo problemas para escrever um script que funcione. Tentei isso:

for i in ~/music/*; { mv $i ~/'basename - $i';}

sem sucesso. Qualquer ajuda? Obrigado!

    
por Mathletics 28.12.2010 / 02:51

1 resposta

0

tente:

cd ~/music
find . -type f | while read i; do album=${i/*\//}; temp=${i/.\//}; artiste=${temp/\/*\/*/}; song=${i/.\/*\/*\//}; mkdir ~/music/$artiste"-"$album; mv $i ~/music/$artiste"-"$album/$song; done 

embora eu recomende usar cp primeiro em vez de mv. apenas no caso ... este script não remove as pastas antigas também.

basicamente, lê o nome do caminho completo de cada arquivo. depois extraia os bits como nome do artista, título da música e título do álbum. Em seguida, ele manipula essas informações para fornecer o estilo de diretório desejado.

    
por 28.12.2010 / 03:13

Tags