Mueva los subdirectorios un nivel hacia arriba y cambie el nombre


0

Estoy tratando de usar Cygwin para reorganizar mi carpeta de música. Actualmente está en formato iTunes

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

Quiero copiar las carpetas del álbum en la carpeta principal y agregar el nombre del artista, así que

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

pero tengo problemas para escribir un guión que funcione. Probé esto:

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

en vano. ¿Alguna ayuda? ¡Gracias!

Respuestas:


0

tratar:

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 

aunque recomendaría usar cp primero en lugar de mv. por si acaso ... este script no elimina las carpetas antiguas también.

básicamente lee el nombre completo de la ruta de cada archivo. luego extraiga los bits como el nombre del artista, el título de la canción y el título del álbum. luego manipula esta información para darle el estilo de directorio que desea.


Al igual que el otro script, tiene hipo cada vez que hay espacios en el nombre del directorio. Además, no hay ninguna información de artista / álbum en el nombre de archivo, solo el título y el número de pista. Sin embargo, la carpeta principal siempre es el artista y cada subdirectorio bajo esa carpeta siempre son los títulos de los álbumes.
Mathletics

Como ya hemos declarado el álbum y el artista como variables, si desea el nombre del álbum y el artista en el nombre del archivo, puede cambiar la salida de $ song a algo así como $ artiste "-" $ album "-" $ song. En cuanto a la cuestión del espacio, tal vez podría hacer un rápido
Reuben L.

sed para reemplazar todos los espacios en los nombres de archivo con guiones bajos.
Reuben L.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.