![如何使用命令“find”列出具有特定文件名长度的文件?](https://linux22.com/image/1310971/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%E2%80%9Cfind%E2%80%9D%E5%88%97%E5%87%BA%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E5%90%8D%E9%95%BF%E5%BA%A6%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
在我的文件夹中我有类似的文件
/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 个字符”的要求。