迭代目录的文件

迭代目录的文件

Runfirstall当我想迭代目录(例如目录)的文件时,我通常会这样做:

for folder in $DIR/Runfirstall/*

然而我在一些代码中发现了下一句话:

for folder in $DIR/!(Runfirstall)/

这有同样的效果吗?

答案1

不,只要extglob设置了 shell 选项,第二个选项就会循环遍历所有目录未命名 Runfirstall

man bash

如果使用内置命令 shopt 启用了 extglob shell 选项,则可以识别多个扩展模式匹配运算符。在以下描述中,模式列表是由 分隔的一个或多个模式的列表|。复合模式可以使用以下一个或多个子模式形成:

      ?(pattern-list)
             Matches zero or one occurrence of the given patterns
      *(pattern-list)
             Matches zero or more occurrences of the given patterns
      +(pattern-list)
             Matches one or more occurrences of the given patterns
      @(pattern-list)
             Matches one of the given patterns
      !(pattern-list)
             Matches anything except one of the given patterns

相关内容