简体   繁体   中英

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

I have two folders A and B, inside that there are two files each. which are created in the below order

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

From the above i need to find which folder was created first(not modified).

ls -c  <path_to_root_before_A_and_B> | tail -1

Now this outputs as "A" (no issues here). Now i delete the file a_1 inside the Directory A. Now i again execute the command

ls -c  <path_to_root_before_A_and_B> | tail -1

This time it shows "B".

But the directory A contains the file a_2, but the ls command shows as "B". how to overcome this

How To Get File Creation Date Time In Bash-Debian

You'll want to read the link above for that, files and directories would save the same modification time types, which means directories do not save their creation date. Methods like the ls -i one mentioned earlier may work sometimes, but when I ran it just now it got really old files mixed up with really new files, so I don't think it works exactly how you think it might.

Instead try touching a file immediately after creating a directory, save it as something like .DIRBIRTH and make it hidden. Then when trying to find the order the directories were made, just grep for which .DIRBIRTH has the oldest modification date.

Assuming that all the stars align (You're using a version of GNU stat(1) that supports the file birth time formats, you're using a filesystem that records them, and a linux kernel version new enough to support the statx(2) syscall, this script should print out all immediate subdirectories of the directory passed as its argument sorted by creation time:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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