首页 > 解决方案 > 如何在 for 循环中排除某些目录?

问题描述

我已经创建了这个循环,但我想从作业中排除一些目录。我尝试了不同的方法,但它一直在所有目录上工作。你能帮我么?

for d in */
    do
    cd $d
    echo $d
    cartel=$(echo ${d} | sed 's/\///')
    echo $cartel

我试过:

 shopt -s extglob
 for d in this_folder/!(global|plugins|css)/   
      do    
      ...
      done

标签: bashfor-loopunixdirectory

解决方案


您可以明确测试要跳过的目录:您可以将 $d 与要避免的目录进行比较,并在您不想处理此目录时使用 continue 进入下一个循环:

for d in */ ; do
    if [ "$d" == "global/" ] || [ "$d" == "plugins/" ] || [ "$d" == "css/" ] ; then
        continue
    fi
    cd $d
    echo $d
    cartel=$(echo ${d} | sed 's/\///')
    echo $cartel
    cd ..
done

推荐阅读