重命名子文件夹

发布于 2024-10-17 03:01:25 字数 495 浏览 7 评论 0原文

我尝试修复我的音乐文件夹,这是 iTunes 弄乱的。

所以我需要的是从以下位置移动文件的脚本:

music\Artist\Album name\Artist - title.mp3

将文件移动到

newmusic\Album name\Artist - title.mp3。

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

find music -type f -exec bash -c 'ext="${0##*.}";基=“$(基名称“$0”。“$ {ext}”)”; dirs="$(目录名 "$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}/ 有人可以帮忙吗?提前致谢..

I try to fix my music folder, what itunes messed up.

So what I need is script to move files from:

music\Artist\Album name\Artist - title.mp3

to move files to

newmusic\Album name\Artist - title.mp3.

I tried the line below, but didin't work.

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}"' {} \;

Does the "cut -d '/' -f 2,3" should be in new="newmusic/${{dirs} cut -d '/' -f 2,3}/
Can anyone help? Thanks in advance..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

╰◇生如夏花灿烂 2024-10-24 03:01:25

我在这里遗漏了一些东西,还是 mv 无法实现你想要的?根据你的问题,这应该有效:

mv music/*/* newmusic/

Am I missing something here, or can mv not achieve what you want? Based on your question, this should work:

mv music/*/* newmusic/
夏末的微笑 2024-10-24 03:01:25
for artist in music/*; do
  if [[ -d "$artist" ]]; then
    for album in $artist/*; do
      mv "$album/*" "newmusic/${album##*/}/"
    done
  fi
done
for artist in music/*; do
  if [[ -d "$artist" ]]; then
    for album in $artist/*; do
      mv "$album/*" "newmusic/${album##*/}/"
    done
  fi
done
一袭白衣梦中忆 2024-10-24 03:01:25

技巧,只要避免“-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

Tricks, just avoid '-exec bash -c' you'll end up with unreadeable over-quoted-protected code.

Instead play with :

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
何时共饮酒 2024-10-24 03:01:25

1.cd 到您的工作目录

2.find music/Artist -type d -maxdepth 0 -exec mv {} newmusic/ \; 应该可以解决问题。

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

1.cd to your working directory

2.find music/Artist -type d -maxdepth 0 -exec mv {} newmusic/ \; should do the trick.

If you don't want to mv then you can replace mv with cp -r.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文