即使修改了其中的文件,仍在Linux目录中查找最旧的文件夹

时间:2019-10-31 12:26:19

标签: linux

我有两个文件夹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”。如何克服这个问题

2 个答案:

答案 0 :(得分:0)

How To Get File Creation Date Time In Bash-Debian

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

相反,尝试在创建目录后立即触摸文件,将其另存为.DIRBIRTH,然后将其隐藏。然后,当尝试查找创建目录的顺序时,只需修改.DIRBIRTH的修改日期最早的grep。

答案 1 :(得分:0)

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

#!/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