aleksandr barakin Asked:2020-12-07 03:22:54 +0000 UTC2020-12-07 03:22:54 +0000 UTC 2020-12-07 03:22:54 +0000 UTC 按“指定长度的名称”标准查找文件/目录 772 如何使用find程序(来自gnu/findutils 包)查找符合“某某名称长度”标准的文件? 尤其是: 名称恰好是n 个字符长 名称长度大于或等于n 个字符 名称长度小于或等于n 个字符(当然大于零) shell 1 个回答 Voted Best Answer aleksandr barakin 2020-12-07T03:22:54Z2020-12-07T03:22:54Z 名称恰好是n 个字符长 为此,-name带有参数的谓词就足够'???'了,其中问题的数量对应于数字n。例如,“恰好三个字符”: $ find -name '???' 名称长度大于或等于n 个字符 在这里,谓词也足够了-name,只需要在模板的末尾指定*。例如,“大于或等于三个字符”: $ find -name '???*' 名称长度小于或等于n 个字符(当然大于零) 在这里,谓词的可能性-name和其中使用的模板已经不够用了。-regex谓词并且是必需的-regextype(-regextype影响后续谓词-regex,因此必须在它们之前使用)。例如,“从一到三个字符”: $ find -regextype posix-basic -regex '.*/[^/]\{1,3\}' 理论上,可以不指定 --regextype默认使用emacs类型,但不幸的是,出于某种原因,长度量词 ( {x}, {x,y}) 在这种情况下不起作用; 为什么正则表达式这么长?因为在 的情况-regex下,与 不同-name,比较是与文件/目录的路径进行的,而不仅仅是其名称(即与./каталог/файл,而不是файл)。
为此,
-name带有参数的谓词就足够'???'了,其中问题的数量对应于数字n。例如,“恰好三个字符”:在这里,谓词也足够了
-name,只需要在模板的末尾指定*。例如,“大于或等于三个字符”:在这里,谓词的可能性
-name和其中使用的模板已经不够用了。-regex谓词并且是必需的-regextype(-regextype影响后续谓词-regex,因此必须在它们之前使用)。例如,“从一到三个字符”:-regextype默认使用emacs类型,但不幸的是,出于某种原因,长度量词 ({x},{x,y}) 在这种情况下不起作用;-regex下,与 不同-name,比较是与文件/目录的路径进行的,而不仅仅是其名称(即与./каталог/файл,而不是файл)。