You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在含相同test1.txt文件的多目录中仅保留最新目录?

最优实现方案

你找对方向啦!用find命令确实是最直接的方式,我给你一套高效的实现方案,一步到位拿到最新的包含test1.txt的目录:

核心命令

find /path/ -type f -name test1.txt -printf "%T@ %h\n" | sort -n -r | head -n 1 | awk '{print $2}'

命令拆解(每一步都清晰可控)

  • find /path/ -type f -name test1.txt:这部分和你想的一样,遍历指定路径下所有名为test1.txt的文件
  • -printf "%T@ %h\n":自定义输出格式,%T@会打印文件的精确修改时间戳(秒级带小数,方便排序),%h打印该文件所在的目录,最终输出每行都是「时间戳 目录路径」的格式
  • sort -n -r:按数字逆序排序,这样最新修改的文件对应的目录会排在最顶部
  • head -n 1:提取排序后的第一行,也就是最新的那条记录
  • awk '{print $2}':从记录里提取第二列,也就是我们要的目录路径

进阶用法(存变量+异常处理)

如果需要把结果存起来做后续操作(比如保留该目录、清理其他目录),可以把命令放到变量里,再加个异常判断避免空值:

latest_dir=$(find /path/ -type f -name test1.txt -printf "%T@ %h\n" | sort -n -r | head -n 1 | awk '{print $2}')

if [ -n "$latest_dir" ]; then
    echo "找到最新的包含test1.txt的目录:$latest_dir"
    # 这里可以添加你的后续操作,比如:
    # echo "正在保留该目录,删除其他..."
else
    echo "警告:没有找到任何包含test1.txt的目录!"
fi

这个方案高效、无冗余,完全基于原生Linux工具链,不需要额外安装软件,处理大量目录也能保持稳定~

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

火山引擎 最新活动