我正在尝试编写bash脚本以在目录中的每个文件夹中执行相同的命令。 在命令中,我运行python代码以创建新文件夹,并在每个文件夹的名称中添加“ _long”和“ _wavs”。
除了新创建的名称以“ _long”和“ _wavs”结尾的文件夹外,我需要在所有文件夹上运行命令。
这是我尝试过的:
dirs=($(find /Volumes/exchange -type d))
for dir in "${dirs[@]}/!(`basename "$dir"`_long|`basename "$dir"`_wavs)/";
do
*commands*
done
答案 0 :(得分:2)
一个简单的for循环,带有find
,不包括具有某些名称的dirs:
for dir in $(find /Volumes/exchange -type d ! -name "*_wavs" ! -name "*_long")
do
# commands on "$dir"
done
答案 1 :(得分:2)
当您无法像@nullPointer的出色答案那样修改输入时,可以在循环内部进行检查:
for dir in "${dirs[@]}"; do
[[ $dir =~ _long$|_wavs$ ]] && continue;
*commands*
done