Linux / Unix查找命令

时间:2014-12-29 21:12:24

标签: linux unix

  • 这样可行:find . -name "skr[0-9][0-9][0-9][0-9][0-9].rtf" -type f

  • 这不起作用:find . -name "skr[0-9]{5}.rtf" -type f

任何人都可以解释并给我类似于第二版命令的内容。

1 个答案:

答案 0 :(得分:2)

{5}是来自扩展正则表达式的语法,而不是来自 shell globbing 的语法。它与-name无效。

对于某些查找版本(GNU),您可以使用-regex代替-name。在这种情况下,您的模式必须与整个路径匹配,请注意*?以及.,因为它们在正则表达式中具有不同的含义。

重复计数语法是"扩展"的一部分。 RE,所以你需要使用-E(找到实际支持它的变种):

find -E . -regex '.+/skr[0-9]{5}\.rtf' -type f

在Mac上,如果你想要这样的安慰,你需要安装GNU findtools:

brew install findutils --default-names

在某些系统上,您可以尝试gfind而不是find