如何在Mac终端中使用sox修剪子文件夹中的声音文件?

时间:2018-01-12 23:02:52

标签: bash terminal sox

我有超过1000个文件夹,每个文件夹包含一个.wav文件和一个.txt文件(example of the folders)。文本文件包含时间间隔,我需要根据每个文本文件给出的时间间隔将.wav文件修剪为剪辑(请注意文本文件位于不同的文件夹中)。我从enter link description here

获得了以下脚本
#!/bin/bash
index=0
while read this; do
if [ $index -gt 0 ]; then
 sox sound.wav clip-$index.wav trim $start $this-$start
fi
((index+=1))
start=$this
done < times.txt

但是,它适用于单个文件,它只能用于当前目录中的文件。如何使其适用于子文件夹并进入循环?

1 个答案:

答案 0 :(得分:0)

基本上,您希望为所有子目录执行此循环。这意味着你需要遍历子目录:

#!/bin/bash
topdir=$(pwd)
find . -type d | while read dir ; do
    cd "$dir"
    if [  -f sound.wav -a -f times.txt ] ; then
        index=0
        while read this; do
            if [ $index -gt 0 ]; then
                sox sound.wav "clip-$index.wav" trim "$start" "$this-$start"
            fi
            ((index+=1))
            start="$this"
        done < times.txt
    fi
done

我认为你问题中的循环可以做你想做的事情,我只是添加了一些引号。