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

Bash : how to rename files that have two extentions?

我调用一个小程序将 .tap 文件(retrogaming)转换为 .wav 音频文件。该程序输出新文件并仅添加 .wav 扩展名 示例:"file.tap" 变为 "file.tap.wav".

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

这是我的代码。欢迎任何帮助。 我的想法是 'erase' 最终文件名中的“.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

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

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

您可以将脚本修改为

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

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

这是我的最终代码。谢谢 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