Shell脚本查找命令,用于将文件名与一个或另一个单词

时间:2017-07-27 06:39:12

标签: linux bash shell ubuntu-16.04 busybox

我正在寻找一个bash shell脚本的命令来查找名称以WordA或WordB开头并以数字结尾的目录中的文件列表。

我有WordA的此命令,并使用WordB复制相同的代码。

find /log/ -name 'WordA*[[:digit:]]'

我尝试将Or条件设置为各种格式,例如(WordA|WordB)[WordA|WordB][(WordA)|(WordB)][(WordA)||(WordB)]以匹配WordAWordB按数字。

他们都没有工作。

2 个答案:

答案 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:]]'