如何简化匹配'symbol'加0或1个's'的find命令
简化匹配symbol/symbols目录的find命令
原命令为:
find . -type d -name symbols -o -name symbol
该命令用于查找当前目录下名称为symbol或symbols的子目录,对应需求是匹配"symbol"后接0个或1个"s"的目录名称。
可以通过以下两种方式简化:
方法一:使用正则表达式匹配
借助find的-regex选项,结合正则表达式的s?语法(表示匹配0个或1个前置字符),将两个条件合并为一个:
find . -type d -regex '.*/symbol[s]?$'
这里的.*/用于匹配目录路径的前缀部分,symbol[s]?$确保路径末尾是symbol(0个s)或symbols(1个s)。
方法二:使用shell扩展通配符(需开启extglob)
如果你的shell支持扩展通配符(如bash),先开启extglob选项,再用?(s)表示匹配0个或1个s:
shopt -s extglob find . -type d -name 'symbol?(s)'
这种方式更贴近原命令的通配符风格,不过需要注意extglob并非所有shell环境都默认启用。
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

