在linux下对目录下的所有文件运行Script



我有一个名为"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;

希望我明白你的意思。

运行脚本后的

相关内容

  • 没有找到相关文章

最新更新