2016-07-14 177 views
0

我想要一個shell命令來查找修改日期爲昨天 - 僅24小時的文件。這意味着我想查找昨天修改過的文件。Shell命令查找昨天修改過的文件24小時

+0

假設您在2016-07-14 10:00運行該命令。您是否正在尋找2016-07-13T00:00:00和2016-07-13T23:59:59之間修改的文件(全部位於當前時區)?或者您正在查找過去24小時內修改過的文件,在這種情況下,範圍介於2016-06-13T10:00:00和2016-07-14T10:00:00之間?或者是其他東西? –

回答

1

使用找到mtimedaystart,它會找到文件修改1 * 24小時前,開始從午夜(一天開始)計算:

find dir -daystart -mtime 1 
+0

請參閱[解釋'find -mtime'命令](http://stackoverflow.com/questions/25599094/explaining-find-mtime-command/25599430?s=1|4.3858#25599430) - 我認爲這不會做什麼還需要。 –

+0

沒錯,但是它會在與'-daystart'結合時做正確的事情(即從昨天的0:00到23:59查找文件) –

+0

Yup - '''''''''''''''假設您使用的是GNU'find' 。 (例如,BSD/Mac OS X'find'不支持'-daystart',即使它支持'-newermt'和相關選項。) –

1

這個答案假設你有GNU datefind。它還假定如果您在2016年7月14日隨時運行腳本,您希望在2016-07-13T00:00:00或2016-07-14T00:00:00之前修改文件。

如果這些假設是正確的,則可以使用:

find . -newermt "$(date -d yesterday +'%Y-%m-%d 00:00:00')" \ 
    '!' -newermt "$(date -d today  +'%Y-%m-%d 00:00:00')" 

第一命令取代產生(2016年7月14日上)的輸出2016-07-13 00:00:00和第二2016-07-14 00:00:00。得到正確結果不需要-d today,但顯示對稱性。

條件總體意味着'在昨天凌晨午夜或之後修改,並且自今天午夜以來未修改'。

在沒有GNU date的系統上執行此操作很難評估不同的日期。

請參閱Explaining find -mtime command瞭解爲什麼使用-mtime不符合假定要求的信息。

相關問題