gpt4 book ai didi

linux - 如何查找具有特定名称的最新文件?

转载 作者:太空狗 更新时间:2023-10-29 11:18:43 25 4
gpt4 key购买 nike

假设我有一个目录,其子目录中有许多同名文件(例如,在为多篇学术论文保留 BibTeX 文件时出现)。

查找具有给定名称的文件的最新版本的最佳方法是什么?

我想出了以下命令

find . -name "someFile" -exec ls -alF {} \;

它列出了所有名为 someFile 的文件及其日期,但没有将它们从旧到新排序。

请注意,ls-t 选项不能在此处使用,因为它针对每个文件单独运行。

最佳答案

您可以将 statfind 一起使用:

find . -name "someFile" -exec stat -c '%n:%Y' {} + | sort -t : -k2 | cut -d : -f1
  • stat 命令打印每个文件名以及自文件修改时间的 EPOCH 值以来的时间
  • sort 使用第二个键(修改时间)对 stat 的输出进行排序
  • cut 只是选择第一列(文件名)

编辑:根据下面的评论,您可以使用:

while IFS=: read -r f t; do
echo "$f <$(date -d @$t)>"
done < <(find . -name "someFile" -exec stat -c '%N:%Y' '{}' + | sort -t : -k2)

编辑 2: 在 Linux 系统上,您可以:

find . -name "someFile" -printf "%p:%T@\n" | sort -t : -k2

更新:

根据操作。将建议的解决方案结合起来得到以下非常干净的解决方案:

find . -name "someFile" -exec ls -latR {} +

显示文件的所有版本,最新的在前。这将需要 gnu find,因为 BSD find 没有 -ls 选项。

关于linux - 如何查找具有特定名称的最新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28862590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com