使用正则表达式进行bash搜索吗?

shi*_*zou 1 regex syntax bash shell sh

使用正则表达式进行bash搜索吗?

例如,如果我想执行一个for循环,它遍历以字母开头的当前目录的所有文件a,那么下面的工作会是什么?

for x in a.*
do
Run Code Online (Sandbox Code Playgroud)

Eug*_*sca 5

文件名扩展方面,ABS指出:

Bash本身无法识别正则表达式.
在内部脚本中,它是命令和实用程序 - 例如sedawk- 解释RE的.

Bash 确实执行文件名扩展 - 一个称为globbing的过程 ,但这不使用标准的RE集.相反,globbing识别并扩展通配符.

有关通配符的更多信息.

然而,正如提到chepner,庆典DOES支持正则表达式的外面filename expansion方面:

(digit=5; [[ $digit =~ [0-9] ]] && echo match)
Run Code Online (Sandbox Code Playgroud)

回到OP的问题,循环遍历所有文件a:

for x in a* ; do
    [[ -f "$x" ]] || continue
    # process x
done
Run Code Online (Sandbox Code Playgroud)