我有超过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
但是,它适用于单个文件,它只能用于当前目录中的文件。如何使其适用于子文件夹并进入循环?
答案 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
我认为你问题中的循环可以做你想做的事情,我只是添加了一些引号。