我正在寻找一个bash shell脚本的命令来查找名称以WordA或WordB开头并以数字结尾的目录中的文件列表。
我有WordA
的此命令,并使用WordB
复制相同的代码。
find /log/ -name 'WordA*[[:digit:]]'
我尝试将Or条件设置为各种格式,例如(WordA|WordB)
,[WordA|WordB]
,[(WordA)|(WordB)]
,[(WordA)||(WordB)]
以匹配WordA
或WordB
按数字。
他们都没有工作。
答案 0 :(得分:2)
在使用-regextype
类型的情况下,您需要使用find
命令支持的posix-extended
并执行
-regextype type
Changes the regular expression syntax understood by -regex and -iregex
tests which occur later on the command line. Currently-implemented
types are emacs (this is the default), posix-awk, posix-basic,
posix-egrep and posix-extended.
所以你的命令应该是
find /log/ -regextype posix-extended -regex './(WordA|WordB)([[:digit:]]+)$'
答案 1 :(得分:2)
在查找手册页中,在标题表达式下,您将找到(无双关语)以下
算
运算符将表达式中的其他项连接在一起。 它们包括例如-o(意思是逻辑OR)和-a(意思是 逻辑AND)。如果缺少运算符,则假定为-a。
因此,问题的答案似乎是
find /log/ -name 'WordA*[[:digit:]]' -o 'WordB*[[:digit:]]'