繁体   English   中英

在 linux 的目录中查找最旧的文件夹,即使里面的文件被修改

[英]Finding the oldest folder in a directory in linux even when files inside are modified

我有两个文件夹 A 和 B,里面各有两个文件。 按以下顺序创建

mkdir A 
cd A
touch a_1
touch a_2
cd ..
mkdir B
cd B
touch b_1
touch b_2
cd ..

从上面我需要找到首先创建的文件夹(未修改)。

ls -c  <path_to_root_before_A_and_B> | tail -1

现在这个输出为“A”(这里没有问题)。 现在我删除目录 A 中的文件 a_1。现在我再次执行命令

ls -c  <path_to_root_before_A_and_B> | tail -1

这次它显示“B”。

但是目录 A 包含文件 a_2,但ls命令显示为“B”。 如何克服这个

如何在 Bash-Debian 中获取文件创建日期时间

您需要阅读上面的链接,文件和目录将保存相同的修改时间类型,这意味着目录不会保存它们的创建日期。 像前面提到的ls -i这样的方法有时可能会起作用,但是当我刚刚运行它时,它会将真正的旧文件与真正的新文件混合在一起,所以我认为它的工作方式与您想象的完全不一样。

而是在创建目录后立即尝试触摸文件,将其保存为.DIRBIRTH之类的文件并将其隐藏。 然后,当尝试查找目录的创建顺序时,只有 grep .DIRBIRTH具有最早的修改日期。

假设所有星星都对齐(您使用的是支持文件诞生时间格式的GNU stat(1)版本,您使用的是记录它们的文件系统,以及 linux kernel 版本足够新以支持statx(2)系统调用,此脚本应打印出作为其参数传递的目录的所有直接子目录,并按创建时间排序:

#!/bin/sh
rootdir=$1
find "$rootdir" -maxdepth 1 -type d -exec stat -c "%W %n" {} + | tail -n +2 \
 | sort -k1,1n | cut --complement -d' ' -f1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM