GNU查找:获取-exec命令的运行计数器(标记具有运行轨道号的mp3)

时间:2015-04-14 10:56:37

标签: bash find counter gnu eyed3

我想自动将MP3集合标记为自定义名称VA Albums。 目前,我使用了像这样的非常安全的命令:

find . -name "*.mp3" -exec eyeD3 -A "Indie 2015" -b "Various Artists" {} \;

现在,我想在文件中添加一个运行轨道号。最简单的方法是find -exec命令中的当前匹配/行号 - 是否有这样的命令?

eyeD3使用-n NUM, - track NUM设置曲目编号,因此我搜索

之类的内容
find . -name "*.mp3" -exec eyeD3 -A "Indie 2015" -b "Various Artists" -n **FIND_MATCH_NUMBER** {} \;

2 个答案:

答案 0 :(得分:1)

一个选项,使用globstar(假设您在嵌套子目录中有文件,这就是您首先使用find的原因):

shopt -s globstar
n=1
for file in **/*.mp3; do
    eyeD3 -A "Indie 2015" -b "Various Artists" -n "$((n++))" "$file"
done

启用globstar后,**/*.mp3 glob会扩展到当前目录以及子目录中以.mp3结尾的所有文件。 $((n++))计算计数器$n的当前值,然后递增它。

答案 1 :(得分:0)

不知道find是否有内部变量可以在awk中告诉像NR这样的记录号。你可以在程序中使用这样的东西

[[ -f file ]] && read i < file
[[ -z $i ]] && let i++
echo $i
let i++
echo $i > file

我们为您计算的每个文件都可以使用。文件可以是任何临时文件。