【发布时间】:2011-11-10 17:33:49
【问题描述】:
在这样的 for 循环中:
for f in `ls *.avi`; do echo $f; ffmpeg -i $f $f.mp3; done
$f 将是完整的文件名,包括扩展名。例如,对于 song1.avi,命令的输出将是 song1.avi.mp3。有没有办法只从 for 循环中获取歌曲 1,而无需 .avi?
我想有办法使用 awk 或其他类似工具来做到这一点,但我希望有更直接的方法。
谢谢
【问题讨论】:
-
顺便说一句,你想失去反引号的无用使用。正确且惯用的语法是
for f in *.avi; do ... -
更不用说 - 如果文件名中有空格(尽管这是一种邪恶的做法),您实际上应该像
ls *avi | while read f; do (...); done一样。然后到处引用"$f"。只是说。
标签: bash