Bash:如何重命名具有两个扩展名的文件?

时间:2017-11-12 16:28:15

标签: bash rename mv

我调用一个小程序将.tap文件(retrogaming)转换为.wav音频文件。程序输出新文件,只需添加.wav扩展名 例如:“file.tap”变为“file.tap.wav”。

我写了一个小脚本来批量转换。它工作但我无法管理最后重命名文件,以删除文件名中的“.tap”。 请注意,有时原始文件具有小写或大写。

这是我的代码。欢迎任何帮助。 我的想法是在最终文件名中“删除”“.tap”或“.TAP”。 nb:我必须在指令中使用$ file.wav,否则它不起作用。 谢谢你的帮助

#!/bin/bash

for file in `ls`;
do
    ./tape_converter -11 -a $file $file.wav ;
    mv $file ${file/\.tap\.wav/\.wav/};

done

3 个答案:

答案 0 :(得分:0)

只需删除.tap,然后添加.wav;没有必要尝试替换。

for f in *; do
   ./tape_converter -11 -a "$f" "$f.wav"
   mv -- "$f" "${f%.tap}.wav"
done

答案 1 :(得分:0)

您可以将脚本修改为

for f in *.tap; do
    <your command> "$f" "${f%.*}.wav"
done

这将直接命名具有相同基本名称和扩展名“.wav”的输出文件。

答案 2 :(得分:0)

这是我的最终代码。谢谢 thanasisp。它工作正常。高兴。

 for i in *;
    do mv "$i" "$(echo $i|tr A-Z a-z)";
 done

 mkdir output

 for f in *.tap;
 do
         ./tape_converter -11 -a $f ${f%.*}.wav ;
         mv *.wav output/
 done