You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于名称长度查找Linux文件和目录并输出完整路径

解决文件名/目录名过长(完整路径输出)的问题

你的命令之所以只能得到文件名,是因为basename把路径部分给去掉了。其实我们可以直接在find的处理流程里保留完整路径,同时判断最后一段(文件名/目录名)的长度,下面给你几个实用的方法:

方法1:用awk配合find(简单直观)

先让find输出所有文件和目录的完整路径,再用awk提取文件名部分判断长度,符合条件就输出完整路径:

find . -type f -o -type d | awk '{
    filename = $0
    sub(/.*\//, "", filename)  # 从完整路径中提取最后一段(文件名/目录名)
    if (length(filename) > 20) {  # 这里的20替换成你需要的x值
        print $0
    }
}'

方法2:用find的-exec直接处理(高效无额外管道)

通过sh -c在find的-exec里处理每个文件/目录,既保留完整路径,又能判断文件名长度:

find . -exec sh -c '
    filename=$(basename "$1")
    if [ ${#filename} -gt 20 ]; then  # 20替换为你的阈值x
        echo "$1"
    fi
' sh {} \;

方法3:用find的正则匹配(最简洁)

利用正则表达式匹配完整路径中“最后一段长度≥20”的情况,一步到位:

find . -regex '.*/[^/]\{20,\}'

这里的\{20,\}表示匹配至少20个非斜杠字符(也就是文件名/目录名部分长度≥20),把20改成你需要的x值即可。

测试效果

针对你给出的文件夹结构,这些命令都会输出以下完整路径:

  • ./longdirectorywithsillylengththatyouwouldntnormallyhave
  • ./longdirectorywithsillylengththatyouwouldntnormallyhave/asdasdads9ads9asd9asd89asdh9asd9asdh9asd
  • ./shrtdir/nowthisisalongfile0000000000000000000000000

内容的提问来源于stack exchange,提问作者user5712518

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:49:01