[英]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”。 如何克服這個
您需要閱讀上面的鏈接,文件和目錄將保存相同的修改時間類型,這意味着目錄不會保存它們的創建日期。 像前面提到的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.