Osx
確定自上次以來目錄內容是否已更改的最快方法
我有一個使用 * 檢查目錄的腳本
mdls
(按添加時間排序),它們執行一些操作。但是,mdls
它有點慢,所以我只想在絕對必要時執行它(即當目錄內容髮生變化時)。我的想法是執行
mdls
一次並記憶體結果,執行一些操作來跟踪目錄的狀態。在隨後的執行中,我會再次執行檢查操作並將結果與我的結果進行比較。如果不同,請重新執行mdls
;如果沒有,請使用記憶體。我正在考慮
du '/dir/path' | tail -1
(如果目錄大小保持等於字節,則內容可能沒有改變)或ls '/dir/path' | md5'
.我目前更傾向於該
md5
解決方案,因為它對文件重命名具有彈性。但是,這兩種解決方案都很老套,我想知道是否有更有效的方法(仍然很快)。如果有幫助,最終該解決方案將在 ruby 腳本中使用。
*我不會將其發佈到Ask Different,因為
mdls
這不是重點。它可以是任何其他慢速命令。
如果檢查新/刪除文件(並忽略對現有文件的修改)就足夠了,您可以使用目錄本身的時間戳
mtime
。你可以得到它
stat
。這裡的輸出是自 1970 年初以來的秒數:$ stat -f %m "$dir" # stat on OS X 1512493220 $ stat -c %Y "$dir" # GNU coreutils stat 1512493801 $ stat -c %.9Y "$dir" # nanoseconds too 1512493801.802870731
如果要檢查對文件的修改,可以檢查它們的所有時間戳,並使案例如
sort
:$ stat -f %m "$dir"/* | sort -n | tail -1 1512428453
(這接近BashFAQ 003,主要是關於查找具有最新時間戳/最大大小/等的文件,但包含一些相當複雜的解決方案。)