从bash脚本循环遍历多个文件扩展名

时间:2018-03-05 05:24:52

标签: bash

我需要一个在Linux终端中使用的bash脚本,它应该类似于:

#!/bin/bash 

for textgrid_file in ./*.TextGrid and for wav_file in ./*.wav
do 
   praat --run pitch.praat "$textgrid_file" "$wav_file" >> output.txt
done

即。我需要遍历带有扩展名.textgrid.wav的成对文件,因为在我的Praat脚本中pitch.praat我有两个参数要通过。如何通过bash脚本实现它?

2 个答案:

答案 0 :(得分:2)

您可以使用数组支持迭代第一个glob模式并使用数组中的第二个文件:

waves=(*.wav)

k=0
for textgrid_file in *.TextGrid; do
    praat --run pitch.praat "$textgrid_file" "${waves[k++]}" >> output.txt
done

答案 1 :(得分:1)

如果我理解你,两个文件名共享相同的基本名称。

#!/bin/bash 
for textgrid_file in ./*.TextGrid 
do 
    name=$(basename $textgrid_file .TextGrid)
    wfile="$name.wav"
    praat --run pitch.praat "$textgrid_file" "$wfile" >> output.txt
done

使用basename提取公共基本名称。