GNU Find:为 -exec 命令获取一个 运行 计数器(用 运行 曲目编号标记 mp3)
GNU Find : Get a running counter for the -exec command ( to tag mp3s with running track number )
我想自动标记一组 MP3 成为自定义名称的 VA 专辑。
目前,我正在使用像这样的非常安全的命令:
find . -name "*.mp3" -exec eyeD3 -A "Indie 2015" -b "Various Artists" {} \;
现在,我想给文件添加一个 运行 曲目编号。最直接的方法是 find -exec 命令中的当前 match/line 数字 - 有这样的命令吗?
eyeD3 使用 -n NUM, --track NUM 设置曲目编号,所以我正在搜索
find . -name "*.mp3" -exec eyeD3 -A "Indie 2015" -b "Various Artists" -n **FIND_MATCH_NUMBER** {} \;
一个选项,使用 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
全局扩展到当前目录以及子目录中以 .mp3
结尾的所有文件。 $((n++))
评估计数器的当前值 $n
然后递增它。
不知道 find 是否有内部变量可以像 awk 中的 NR 一样告诉记录号。你可以在你的程序中有这样的东西
[[ -f file ]] && read i < file
[[ -z $i ]] && let i++
echo $i
let i++
echo $i > file
对于我们统计的每个文件,您都可以使用。文件可以是任何临时文件。
我想自动标记一组 MP3 成为自定义名称的 VA 专辑。 目前,我正在使用像这样的非常安全的命令:
find . -name "*.mp3" -exec eyeD3 -A "Indie 2015" -b "Various Artists" {} \;
现在,我想给文件添加一个 运行 曲目编号。最直接的方法是 find -exec 命令中的当前 match/line 数字 - 有这样的命令吗?
eyeD3 使用 -n NUM, --track NUM 设置曲目编号,所以我正在搜索
find . -name "*.mp3" -exec eyeD3 -A "Indie 2015" -b "Various Artists" -n **FIND_MATCH_NUMBER** {} \;
一个选项,使用 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
全局扩展到当前目录以及子目录中以 .mp3
结尾的所有文件。 $((n++))
评估计数器的当前值 $n
然后递增它。
不知道 find 是否有内部变量可以像 awk 中的 NR 一样告诉记录号。你可以在你的程序中有这样的东西
[[ -f file ]] && read i < file
[[ -z $i ]] && let i++
echo $i
let i++
echo $i > file
对于我们统计的每个文件,您都可以使用。文件可以是任何临时文件。