“查找”包含指定范围内的整数的文件(在 bash 中)

Ben*_*mer 5 linux bash find

你可能认为我已经可以在某个地方找到这个问题的答案,但我正在努力这样做。我想找到一些名称类似的日志文件

myfile_3.log
Run Code Online (Sandbox Code Playgroud)

但是我只想找到数字在一定范围内的那些。我尝试过这样的事情:

find <path> -name myfile_{0..67}.log #error: find: paths must precede expression
find <path> -name myfile_[0-67].log #only return 0-7, not 67
find <path> -name myfile_[0,67].log #only returns 0,6,7
find <path> -name myfile_*([0,67]).log # returns only 0,6,7,60,66,67,70,76,77
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

oli*_*liv 6

如果要使用正则表达式匹配整数范围,请使用-regex命令中的选项find

例如,要匹配从 0 到 67 的所有文件,请使用以下命令:

find <path> -regextype egrep -regex '.*file([0-5][0-9]|6[0-7])\.txt'
Run Code Online (Sandbox Code Playgroud)

正则表达式中有 2 个部分:

  • [0-5][0-9]匹配范围0-59
  • 6[0-7]匹配范围 60-67

-regextype egrep请注意具有扩展正则表达式的选项。
另请注意,该选项与整个文件名(包括路径)匹配,这就是正则表达式开头的-regex原因。.*