如何在所有子目录中运行此代码? [重复]

问题描述 投票:0回答:1

找到了这段代码(https://github.com/Topslakr/x32Live-CleanUp/blob/master/Delete_Silent),它在 Cygwin 中运行得很好,可以满足我的需要,但是,我想让它也运行在所有子目录。一直在寻找,尝试各种事情,但没有任何效果。顺便说一句,我不是 Linux 人。

我知道需要更改的是第一行:

for wav in *.wav
    do
        V=$($sox "$wav" -n stat 2>&1 | grep "Maximum amplitude" | cut -d ":" -f 2 | sed 's/ //g')
        if [[ $(echo "if ("$V" > "$MAX") 1 else 0" | bc) -eq 0 ]]
            then
                if [ $safe = 0 ]
                    then
                        echo "Deleting Data"
                        rm -rfv "$wav"
                    else
                        echo "Running in Safe Mode"
                        echo "Would delete $wav";
                    fi
            else echo "File $wav not slient"
        fi
    done

我确实可以通过将行更改为:

使其在特定级别的子目录中工作
for wav in */*/*.wav

但是我有不同级别的子目录,如果我可以为每个相应级别的子目录运行一个代码而不是多个代码,那就太好了。有人知道解决方案是什么吗? (谢谢!)

bash subdirectory
1个回答
0
投票

要获取每个子目录的 wav 文件,您可以使用:

for wav in **/*.wav

在此处阅读更多内容:路径中的 ** 意味着什么?

© www.soinside.com 2019 - 2024. All rights reserved.