0

所以我现在拥有的是 youtube-dl 下载到这个文件夹“/media/zachary/Ante'esemone/Not in iTunes/”,它会创建一个带有频道名称的文件夹,例如:

  • 别名
  • 大篷车宫殿
  • 自杀羊先生

然后在这些文件夹中是标记为的 .mp3 文件:

  • 以太 - Catharsis.mp3
  • 回声 - 离开你的爱人.mp3
  • 朦胧的眼睛 - Untitled.mp3

所以我有一个脚本,可以一次编辑 1 个文件夹中所有文件的 ID3 标签,这个脚本添加下载它的频道的名称,并将文件名中的艺术家姓名添加到 ID3 标签中. 例如:

以太 - Catharsis.mp3

变成:

Catharsis.mp3(ID3 标签为“Aether”作为艺术家,“Mrsuicidesheep”作为评论)

但是我当前的脚本(我将在下面添加)一次只能执行 1 个文件夹,我需要的是一个命令(或对脚本的编辑),它可以一次执行父文件夹中的所有文件夹。

#!/bin/bash
for f in *.mp3; do
artist="$(printf "$f" | cut -d '-' -f 1 | sed 's/ *$//')"
eyeD3 --artist "$artist" "$f" 
mv -nv "$f" "$(printf "$f" | cut -d'-' -f 2 | sed 's/^ *//')"
done

^将添加艺术家标签并将文件重命名为曲目名称

对于任何最初的困惑,我深表歉意。

4

1 回答 1

0

尝试这个?:

#!/bin/bash
for f in */*.mp3; do
    directory=${f//\/*/}
    artist=$(printf "$f" | sed -e 's:[^/]*/::g' -e 's: - .*::g')
    eyeD3 --artist "$artist" "$f"
    mv -nv "$f" "$directory/${f//* - /}"
done

我删除了printf | cut | sed我认为没有必要的地方,但可以随意这样做。

于 2017-01-12T03:20:59.140 回答