在我的文件夹中我有类似的文件
/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 个字符”的要求。