@OP,
glob pettern不仅用于文件名吗?
不,“ glob”模式不仅用于文件名。您也可以使用它来比较字符串。在示例中,您可以使用case / esac查找字符串模式。
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
在bash中,何时使用glob模式以及何时使用正则表达式?谢谢!
正则表达式比“全局模式”更通用,更“方便”,但是,除非您要执行“全局/扩展全局”无法轻松提供的复杂任务,否则就无需使用正则表达式。bash <3.2的版本不支持正则表达式(如dennis所述),但是您仍然可以使用扩展的globlob(通过设置extglob
)。延长通配,见这里和一些简单的例子在这里。
OP更新:示例使用正则表达式查找以2个字符(点“。”表示1个字符)后跟“ g”开头的文件
例如输出
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
上面的文件是匹配的,因为它们的名称包含2个字符,后跟“ g”。(即..g
)。
与遍历等效的内容将是这样的:(请参阅参考资料,了解?
and的含义*
)
$ for file in ??g*; do echo $file; done
abg
degree
..g