bash - for循环目录中的每个文件夹,不包括其中的一些

标签 bash for-loop

非常感谢您的帮助!

我在 bash 中有这段代码:

for d in this_folder/*    
    do    
        plugin=$(basename $d)
        echo $plugin'?'
        read $plugin
    done

这就像一个魅力。对于“this_folder”中的每个文件夹,将其作为问题回显并将输入存储到具有相同名称的变量中。

但现在我想排除一些文件夹,例如,它会询问该目录中的每个文件夹,前提是它们不是以下任何文件夹:global、plugins 和 css。

有什么想法可以实现吗?

谢谢!

更新:

最终代码是这样的:

base="coordfinder|editor_and_options|global|gyro|movecamera|orientation|sa"

> vt_conf.sh
echo "# ========== Base"     >> vt_conf.sh
for d in $orig_include/@($base)
do
    plugin=$(basename $d)
    echo "$plugin=y"         >> vt_conf.sh
done
echo ''                      >> vt_conf.sh
echo "# ========== Optional" >> vt_conf.sh
for d in $orig_include/!($base)
do
    plugin=$(basename $d)
    echo "$plugin=n"         >> vt_conf.sh
done

最佳答案

如果你有最新版本的 bash,你可以使用扩展的 globs(shopt -s extglob):

shopt -s extglob

for d in this_folder/!(global|plugins|css)/   
do    
    plugin=$(basename "$d")
    echo $plugin'?'
    read $plugin
done

关于bash - for循环目录中的每个文件夹,不包括其中的一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13085929/

相关文章:

c - 如何更改二维数组中的位置

bash - sed 通过 ssh 连接 + `s' 的未知选项

POSIX 与非 POSIX 模式下的 Bash 赋值语句扩展

bash - 如何在 bash 中同时遍历多个通配符?

android - 计算纬度/经度列表之间的距离

javascript - 如何迭代多维 javascript 对象数组

c - 为什么有些数字打印时带有小数位?

regex - sed 命令 : regex in bash to exclude certain strings

BASH:使用 tr 将一行分隔成单词

ruby - Ruby HTTP 流量的代理