如何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)。
find
MacOS 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討論一般如何處理秒。