【发布时间】:2021-05-16 03:07:33
【问题描述】:
我有一个 mp3 文件目录,这些文件都命名为 1.mp3、2.mp3 等。
#dir with numbers for names
10.mp3 15.mp3 2.mp3 24.mp3 29.mp3 33.mp3 38.mp3 42.mp3 47.mp3 51.mp3 56.mp3 60.mp3 65.mp3 7.mp3 74.mp3 79.mp3 83.mp3 88.mp3 92.mp3
11.mp3 16.mp3 20.mp3 25.mp3 3.mp3 34.mp3 39.mp3 43.mp3 48.mp3 52.mp3 57.mp3 61.mp3 66.mp3 70.mp3 75.mp3 8.mp3 84.mp3 89.mp3 93.mp3
12.mp3 17.mp3 21.mp3 26.mp3 30.mp3 35.mp3 4.mp3 44.mp3 49.mp3 53.mp3 58.mp3 62.mp3 67.mp3 71.mp3 76.mp3 80.mp3 85.mp3 9.mp3 94.mp3
13.mp3 18.mp3 22.mp3 27.mp3 31.mp3 36.mp3 40.mp3 45.mp3 5.mp3 54.mp3 59.mp3 63.mp3 68.mp3 72.mp3 77.mp3 81.mp3 86.mp3 90.mp3 95.mp3
14.mp3 19.mp3 23.mp3 28.mp3 32.mp3 37.mp3 41.mp3 46.mp3 50.mp3 55.mp3 6.mp3 64.mp3 69.mp3 73.mp3 78.mp3 82.mp3 87.mp3 91.mp3 96.mp3
我写了一个 for 循环来使用 ffmpeg 从元数据中提取标题:
for x in *.mp3; do
ffmpeg -i $x ./$("ffmpeg -i $x 2>&1 |grep -E '^\s*title\s*\:\s.*$' |awk -F ' :' '{print $2}'".mp3
done
不是提取标题并重命名文件,而是说文件'.mp3'已经存在,我想重写它吗?当我输入 y 来重写这个新的“.mp3”时,同样的事情又会发生。 我通过将输出文件的完整路径放在双引号中来解决问题,而不仅仅是标题提取命令
for x in *.mp3; do
ffmpeg -I $x "./$(ffmpeg -i $x 2>&1 |grep -E '^\s*title\s*\:\s.*$' |awk -F ' :' '{print $2}'
)".mp3
done
我的问题是,当我只将标题提取命令用引号括起来而不是整个路径时,为什么它会创建一个名为 .mp3 的新文件?
对不起,如果这有点冗长,我是堆栈溢出的新手
【问题讨论】:
-
貌似是ffmpeg的扩展 -i $x 2>&1 |grep -E '^\s*title\s*\:\s.*$' |awk -F ' :' ' {print $2}' 没有返回任何内容
标签: bash file audio ffmpeg terminal