2

我尝试修复我的音乐文件夹,iTunes 搞砸了。

所以我需要的是脚本来移动文件:

音乐\艺术家\专辑名称\艺术家 - 标题.mp3

将文件移动到

新音乐\专辑名称\艺术家 - 标题.mp3。

我尝试了下面的行,但没有用。

find music -type f -exec bash -c 'ext="${0##*.}"; base="$(basename "$0" ."${ext}")"; dirs="$(dirname "$0" | cut -d '/' -f 2,3)"; new="newmusic/${dirs}/${base}.${ext}"; cp "$0" "${new}"' {} \;

"cut -d '/' -f 2,3" 是否应该在 new="newmusic/${{dirs} cut -d '/' -f 2,3}/ 有人能帮忙吗?提前谢谢..

4

4 回答 4

2

我在这里遗漏了什么,还是mv无法实现您想要的?根据您的问题,这应该有效:

mv music/*/* newmusic/
于 2011-02-13T15:26:11.413 回答
1

技巧,只是避免'-exec bash -c'你最终会得到无法阅读的过度引用保护代码。

而是玩:

find -name .mp3 | while read file
do
    # Play with "$file"
    # Don't play with $file without doubles quotes, keep spaces in mind
    # Don't play with '$file', it'a common error ^^
done
于 2011-03-20T13:36:20.733 回答
1
for artist in music/*; do
  if [[ -d "$artist" ]]; then
    for album in $artist/*; do
      mv "$album/*" "newmusic/${album##*/}/"
    done
  fi
done
于 2011-03-08T04:54:39.397 回答
0

1.cd到你的工作目录

2.find music/Artist -type d -maxdepth 0 -exec mv {} newmusic/ \;应该做的伎俩。

如果您不想,mv则可以将 mv 替换为cp -r.

于 2011-02-13T16:03:49.347 回答