shi*_*zou 1 regex syntax bash shell sh
使用正则表达式进行bash搜索吗?
例如,如果我想执行一个for循环,它遍历以字母开头的当前目录的所有文件a,那么下面的工作会是什么?
for x in a.*
do
Run Code Online (Sandbox Code Playgroud)
在文件名扩展方面,ABS指出:
Bash本身无法识别正则表达式.
在内部脚本中,它是命令和实用程序 - 例如sed和awk- 解释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)