此 shell 脚本仅处理一个文件
This shell script processes only one file
我想将一个mp3文件的标题和标签设置为文件名。例如,如果 audio.mp3 是文件名,则应将 audio 设置为标题和标签标签。要处理所有以字母 P 开头的 mp3 文件,我想将 P*mp3 作为命令行参数传递。我的 shell 脚本是:
# mp3tag.sh
# Change title and label of mp3 files to file name
# Feb-25-2019
if [ $# -lt 1 ]; then
echo file name missing. Wild cards OK
exit 1
fi
for i in ; do
name=`echo $i | sed 's/....$//'` # Remove dot and mp3 from filename
mp3info -t "$name" -l "$name" "$i"
if [ $? -eq 0 ]; then
echo Changed tags for "$i"
else
echo Error in changing tags for "$i"
fi
done
此脚本仅处理目录中的第一个文件 P1.mp3,尽管我有 P1.mp3、P2.mp3 等文件......我去哪儿了错误的?请帮助
通配符文件名扩展由 shell 执行。当您的脚本运行时,shell 已经将 P*mp3
扩展到实际的文件名列表中,因此 </code> 只是第一个文件名。</p>
<p>使用 <code>$*
代替
。
我想将一个mp3文件的标题和标签设置为文件名。例如,如果 audio.mp3 是文件名,则应将 audio 设置为标题和标签标签。要处理所有以字母 P 开头的 mp3 文件,我想将 P*mp3 作为命令行参数传递。我的 shell 脚本是:
# mp3tag.sh
# Change title and label of mp3 files to file name
# Feb-25-2019
if [ $# -lt 1 ]; then
echo file name missing. Wild cards OK
exit 1
fi
for i in ; do
name=`echo $i | sed 's/....$//'` # Remove dot and mp3 from filename
mp3info -t "$name" -l "$name" "$i"
if [ $? -eq 0 ]; then
echo Changed tags for "$i"
else
echo Error in changing tags for "$i"
fi
done
此脚本仅处理目录中的第一个文件 P1.mp3,尽管我有 P1.mp3、P2.mp3 等文件......我去哪儿了错误的?请帮助
通配符文件名扩展由 shell 执行。当您的脚本运行时,shell 已经将 P*mp3
扩展到实际的文件名列表中,因此 </code> 只是第一个文件名。</p>
<p>使用 <code>$*
代替 。