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

如何查找所有唯一文件名并去除重复名称与目录路径

问题2:查找所有唯一文件名,去除重复名称及目录名

这个需求的核心是:不仅要去掉重复的文件名,还要排除那些和某个目录名重名的文件名(比如如果有个目录叫file-2,就不想把文件file-2算在结果里)。

可以分两步实现,先收集所有目录名,再过滤文件名:

# 第一步:收集所有目录名,去重后存到临时文件
find /path/to/target-dir -type d -exec basename {} \; | sort | uniq > /tmp/dir_names.txt

# 第二步:提取文件名、去重,然后排除和目录名重复的项
find /path/to/target-dir -type f -exec basename {} \; | sort | uniq | grep -vxFf /tmp/dir_names.txt

# 清理临时文件
rm /tmp/dir_names.txt

拆解细节:

  1. 第一行命令:找到所有目录,提取目录名并去重,存到临时文件/tmp/dir_names.txt。
  2. 第二行命令:先按问题1的方式提取并去重文件名,再用grep过滤:
    • -v:反向匹配(只保留不匹配的行)
    • -x:整行完全匹配(避免部分匹配,比如file和file-1不会被误判)
    • -F:把目录名当作固定字符串,不是正则表达式
    • -f /tmp/dir_names.txt:从临时文件读取要排除的目录名列表
  3. 最后删除临时文件,避免残留。

用你的示例测试,如果目录结构里没有和文件名重名的目录,输出和问题1一致;如果新增一个目录file-2,执行后输出会变成:

file-1
file-3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:12:28