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