2011-08-24 213 views
8

是否可以獲取文件夾的修改日期和時間?
我知道你可以使用stat -f "%m" folder,但它並不反映子文件/文件夾的變化。獲取文件夾(或子文件/文件夾)的最後修改日期和時間

的事情,不工作:

  • ls -l folder - 並不能反映文件夾內的變化
  • stat -f "%m" folder - 同上
  • date -r folder - 同樣再次
  • find foo bar baz -printf - 在printf選項在我的版本上找不到
事情個

版本:

  • 操作系統:Mac OS X 10.7.1
  • 擊:GNU的bash,版本3.2.48(1)-release下(x86_64-蘋果darwin11)
+0

試試這裏列出的答案:http://stackoverflow.com/questions/4997242/in-linux-terminal-how-do-i-show-the-folders-last-modification-date-taking-它的 – Mohammad

+0

沒有,它們的工作原理是'printf'選項沒有在Mac OS X的'find'中實現10.7.1 – Tyilo

+0

您是否正在尋找特定目錄中最近修改過的文件或目錄?你想如何遞歸? –

回答

13

解決方案:

find . -exec stat -f "%m" \{} \; | sort -n -r | head -1 

說明:

  1. find命令遍歷當前目錄(.)和每個文件中遇到的執行(-exec)命令stat -f "%m"stat -f "%m"打印文件的最後修改時間戳。
  2. sort -n -r排序find命令的以相反的順序(-r)輸出數值(-n)。這將首先列出最新的修改時間戳。
  3. head -1然後從sort中提取第一行輸出。這是所有文件的最新修改unix時間戳。
+0

將很好地解釋每個部分正在做什麼,這個命令使我的電腦崩潰。 –

+0

@HermannIngjaldsson添加了解釋。如果您使用的是基於Linux的操作系統,而不是基於BSD的操作系統,那麼這可能不適合您。 – Tyilo

+0

如果有人刪除文件夾中的文件,會給出錯誤信息。比如說你正在嘗試爲一個文件夾維護一個md5散列,並且想知道何時重新計算它。然後這不會工作... – Cookie

5

你可以嘗試「日期-r文件夾」,給你一個最後修改日期

+4

'-r秒 打印秒數表示的日期和時間,其中秒數爲 自紀元(00:00:00 UTC,1月1日, 1970;請參閱時間(3))以來的秒數,可以是指定十進制,八進制或 十六進制。' – Tyilo

+0

+1 @Tylio但是要說明 - 「date -r文件夾+'%s'」 - 將返回自「epoch」查看「date --help」以來的秒數以獲取更多信息 – ChrisK

+4

@ChrisK'-r'表示GNU'date'中的參考文件,它似乎是你在BSD'date'(Mac OS X使用的風格)時所指的內容,它的行爲如同Tyilo的評論 – jw013

0

你總是可以從ls得到它:

ls -ld mydir | awk -F' ' '{ print $6 " "$7 }' 
+0

中所引用的那樣考慮子文件 – Tyilo

+0

我不確定你的意思是「子文件」,但是在我的系統中,在目錄中創建的新文件將更新父目錄修改時間。 –

+0

@JJ不在我的遺憾 – Tyilo

相關問題