问题描述
我的父目录中有一个名为 Stem 的父目录,我大约有20个子目录,而20个子目录的名称以 _a 结尾,每个子目录中有一个名为 violations.txt 的文件。在这20个子目录中,两个子目录分别是 Trans_a 和 shift_a ,我不需要对这两个子目录执行任何脚本操作。 我只需要在18个子目录上执行脚本即可。
我尝试了以下代码,但未获得确切的输出。
#!/bin/bash
echo "These warning reports are based on this run directory:" ; pwd
echo " " ;
File="violatons.txt"
for d in *_a;
do
if ( "$d"=="Trans_a"||"shift_a" ); then
True
else
Statement
fi
done
注意:在某些情况下,我们需要在脚本中排除的子目录可能会增加或减少,这取决于具体情况。
解决方法
for f in !(Trans|shift)_a/violations.txt; do
echo "$f"
# do stuff
done
!(pattern-list)
匹配给定模式之一以外的任何内容。
参考:https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Pattern-Matching