如何使用命令“find”列出具有特定文件名长度的文件?

如何使用命令“find”列出具有特定文件名长度的文件?

在我的文件夹中我有类似的文件

/data/filename.log /data/filename.log.1 /data/filename.log.2 /data/filenamefilenamefilename.log /data/filenamefilenamefilename.log.2

我希望使用“find”命令列出长度大于 15 个字符的文件。

我尝试了以下方法,但都不起作用:

find ./ -type f -iregex "/^.*{15,1000}$/" -print
find ./ -type f -iregex "/^.*{15}$/" -print
find ./ -type f -iregex "^.*{15}$" -print
find ./ -type f -iregex ".*{15}" -print
find ./ -type f -iregex ".{15}" -print
find ./ -type f -iregex ".{15,1000}" -print

不确定什么是正确的方法?

谢谢!

答案1

如果您只想匹配文件名,我建议您使用 Paul 的版本。如果您想-regex匹配完整路径,您可以这样做

find /data -type f -regextype posix-egrep -regex ".{15}"

或 15 个或更多字符

find /data -type f -regextype posix-egrep -regex ".{15}.*"

检查手册页以了解可以使用的不同正则表达式引擎-regextype


您还可以使用该-regex选项仅查找 15 个字符的文件名:

find /data -type f -regextype posix-egrep -regex ".*/[^/]{15}"

或 15 个或更多字符:

find /data -type f -regextype posix-egrep -regex ".*[^/]{15}"

答案2

name参数接受简单的通配符,因此以下内容将起作用:

 find . -type f -name '????????????????*'

因此,有 16 个问号,后面跟着一个星号。问号匹配单个字符,但必须匹配,因此连续 16 个问号可确保文件名中有 16 个字符。末尾的星号允许添加任何其他字符,通过匹配“16 个或更多字符”可满足“大于 15 个字符”的要求。

相关内容