我有一个名为"bin"的目录,其中我有一个名为"GetMaxFreqs"的脚本
要执行它,我需要:
./GetMaxFreqs -w file.freqs file.wav
在"bin"文件夹我有一个文件夹叫做数据集这里有100个"频率"100 "。wave "文件,我想运行脚本来执行"GetMaxFreqs"自动.
我试着:
for f in database/*.wav; do ./GetMaxFreqs -w "$f".freqs *.wav; done
:
for f in database/*.wav; do ./GetMaxFreqs -w "$f".freqs "$f".wav; done
但是在第一个文件中,每个文件的输出都是相同的,而在第二个文件中,它给出了一个错误。
我想你需要basename
假设您想要调用./GetMaxFreq -w somefile.freqs somefile.wav
,并且假设文件名中没有任何空格,那么试试:
for w in database/*.wav; do
f=${basename $w}.freqs
./GetMaxFreqs -w $f $w
done
如果你有空格,试试这个:
for w in database/*.wav; do
f="${basename $w}.freqs"
./GetMaxFreqs -w "$f" "$w"
done
这与paulsm4的解决方案类似…它对我有效(假设您希望两个文件名相同,如file1.freqs和file1.wav):
for w in database/*.wav; do
f=`basename -s .wav $w`.freqs;
./GetMaxFreqs -w database/$f $w;
done;
希望我明白你的意思。
运行脚本后的