簡體   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