将子目录上移一级并重命名

将子目录上移一级并重命名

我正在尝试使用 Cygwin 重新组织我的音乐文件夹。目前它是 iTunes 格式

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

我想将专辑文件夹复制到父文件夹并添加艺术家姓名,因此

~/{Artist}/{Album}变成~/{Artist} - {Album}

但我在编写一个有效的脚本时遇到了麻烦。尝试过这个:

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

毫无效果。有什么帮助吗?谢谢!

答案1

尝试:

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 

不过我建议先使用 cp 而不是 mv。以防万一……这个脚本也不会删除旧文件夹。

基本上,它读取每个文件的完整路径名。然后提取诸如艺术家姓名、歌曲标题和专辑标题之类的信息。然后它会处理这些信息以提供您想要的目录样式。

相关内容