Linux/Unix Find Command


  • 这工作正常: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

任何人都可以解释一下并给我类似于命令的第二个版本的东西。

{5}

来自扩展正则表达式的语法,而不是来自shell通配的语法。它对-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

最新更新