gpt4 book ai didi

linux - 获取目录中最新条目(文件或目录)的日期

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:40 26 4
gpt4 key购买 nike

我有一堆目录,其中包含同一个 C++ 项目的不同版本。我想把这些目录中的每一个移动到以 YYYY.MM.DD 模式命名的父目录中来解决问题。其中 YYYY.MM.DD 是目录中最新条目(文件或目录)的日期。

如何以递归方式查找特定目录中最新条目的日期?

更新

下面是其中一种方法:

find . -not -type d -printf "%T+ %p\n" | sort -n | tail -1

甚至:

find . -not -type d -printf "%TY.%Tm.%Td\n" | sort -n | tail -1

最佳答案

尝试使用 ls -t|head -n 1 列出按修改日期排序的文件并仅显示第一个。日期将采用您的区域设置定义的格式(即 YYYY-MM-DD)。

例如,

ls -tl | awk '{date=$6; file=$8; system("mkdir " date); system("mv $8 " " date"/")'

将遍历所有文件并为每个修改数据创建一个目录并将文件移动到那里(注意:必须注意包含空格的文件名)。现在在源代码树的根目录中使用find -type d 递归列出所有目录。结合上面你现在拥有的(遗憾的是现在有一些开销):

for dir in $(find -type d) ; do
export dir
ls -tl dir| awk '{dir=ENVIRON["dir"]; date=$6; file=$8; system("mkdir " dir "/" date); system("mv " dir "/" $8 " " dir "/" date"/")'
done

这不会递归遍历树,而是获取完整树的所有目录,然后遍历它们。如果您需要源代码树之外的日期目录(假设是这样),只需相应地编辑 awk 脚本中的两个 system() 调用。

已编辑:修复脚本,添加更多描述

关于linux - 获取目录中最新条目(文件或目录)的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062114/

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