从父

时间:2017-01-12 01:37:19

标签: bash directory eyed3

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

  • Aliasizm
  • 大篷车宫
  • MrSuicideSheep

然后在这些文件夹中标记为:

的.mp3文件
  • Aether - Catharsis.mp3
  • Echos - Leave Your Lover.mp3
  • Hazey Eyes - Untitled.mp3

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

Aether - 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

^将添加Artist标签并将文件重命名为Track name

我为任何最初的困惑道歉。

1 个答案:

答案 0 :(得分: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我不认为有必要的地方,但可以随意这样做。