尋找所有超過一分鐘的文件

尋找所有超過一分鐘的文件

如何find選擇在最後一刻已寫入且未修改的檔案?

我知道我可以反過來做,使用 查找過去 60 秒內修改的文件-mtime -60s,但我想要過去 60 秒內未修改的文件。

我使用 Linux,如果使用秒,則會出現此錯誤:

find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'

答案1

使用find /path -type f -mtime +60s

數字前面的-不是常規的“參數破折號”,而是表示“小於”。+然後是“超過”。

man find

所有採用數字參數的原色都允許數字前面有加號(``+'')或減號(``-'')。前面的加號表示“大於 n”,前面的減號表示“小於 n”,兩者都不表示“恰好 n”。

應該指出的是,對於正好n,時間被四捨五入。所以1(1 天)並不意味著 86400 秒。

答案2

find . -type f -mmin +1

例子

$ ls *
four.txt  one.txt  three.txt  two.txt

$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt

答案3

第二個--mtime -60s不是選項分隔符號。

-mtime是一個選項,後面跟著一個選項參數。選項參數是-60s,其中-的 是選項參數本身的一部分,不是選項分隔符號。意思是「少於60秒」。選項參數60s+60s分別表示「等於 60 秒」和「大於 60 秒」。

Apple MacOS 手冊和 FreeBSD 手冊在同一位置提到了+-前綴,但忘記在任何地方解釋它們是什麼。他們就是這樣。

(有趣的是,GNU 的 GNU Info 手冊也find有同樣的遺漏。但是,GNUfind的時間語法與 BSD 和 MacOSfind語法有些不同。)

進一步閱讀

  • 蘋果公司成立(2008-02-24)。findMacOS 10 手冊頁。 MacOS 10 開發人員庫。
  • find(1)。 2010年3月17日。 FreeBSD 通用指令手冊。 FreeBSD 專案。

答案4

在 Unix 系統中,-mtime 後面通常跟一個 +/-,後面跟著一個數字,後面跟著一個時間單位。 [+-]nn[dms]

Linux 使用 mtime 表示天,mmin 表示分鐘,但似乎沒有秒選項,也不使用時間單位說明符。 + 或 - 仍然指大於或小於時間,而不是如上所述的選項參數。

您可以使用 -mmin 1,但是https://unix.stackexchange.com/questions/238738/find-files-newer-than-15-Seconds-but-older-than-2-Seconds討論一般如何處理秒。

相關內容