再會。
我正在嘗試創建一個 bash 腳本,它將目錄中的所有檔案與特定時間戳進行比較。這個時間戳存盤在一個變數中。如果檔案創建日期與時間戳相差幾秒鐘,它將列印檔案名。
似乎最合適的是 find 命令。到目前為止,我已經嘗試過:
find /directory/*.txt -type -f -newer $TimestampVariable
(with $TimestampVariable="Wed May 11 13:53:20 EDT 2022")
作為一個起點。但這不起作用,因為它沒有讀取變數中的時間戳,也沒有將它與 $TimestampVariable 和五秒后的時間范圍進行比較。
uj5u.com熱心網友回復:
使用 GNU 和 BSDfind,您可以使用-newerXY謂詞。
例如,如果您搜索其間修改的所有檔案Wed May 11 13:53:20 EDT 2022,Wed May 11 13:53:25 EDT 2022然后您可以執行以下操作:
find . -type f -newermt 'Wed May 11 13:53:19 EDT 2022' -not -newermt 'Wed May 11 13:53:26 EDT 2022'
然后,給定以下格式的時間戳變數:
TimestampVariable="Wed May 11 13:53:20 EDT 2022"
以下是如何生成所需的兩個日期-newerXY(我選擇生成 ISO-8601 格式的日期,因為它得到了很好的支持)。
- 在 Linux 上:
min=$(date -d "$TimestampVariable -1sec" --iso-8601=second)
max=$(date -d "$TimestampVariable 6sec" --iso-8601=second)
- 在 macOS 上:
min=$(date -j -v-1S -f '%a %b %d %T %Z %Y' "$TimestampVariable" %Y-%m-%dT%T%z)
max=$(date -j -v 6S -f '%a %b %d %T %Z %Y' "$TimestampVariable" %Y-%m-%dT%T%z)
現在你可以這樣做:
find . -type f -newermt "$min" -not -newermt "$max"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475850.html
