Linux

用於檢測昨天修改的文件並檢查其大小是否高於某個門檻值的 Bash 腳本

  • November 20, 2018

我正在為stat目錄中的所有文件編寫腳本,然後找到昨天創建的特定文件並告訴我它們是否大於某個大小。

所以基本上我需要這個來找到那個文件,它是一個 .gz 類型的文件(並且應該至少在 24 小時前最後修改)並讓它檢查它的大小以確保它不低於某個數字,比如 4 KB例子。如果是,在 4 KB 大小以下,它需要回顯“失敗”或類似的東西,如果它高於該門檻值,則需要回顯“成功”或類似的東西。

最終,如果它是失敗或成功,我會讓它發送一封電子郵件。

到目前為止,我已經說明了所有文件並找到了過去 24 小時內修改過的文件,但是由於我是新手,所以我現在迷路了:

for file in /*; do
 stat $file
done
find /* -mtime -1 -print

我現在有這個執行我的整個電腦,但它最終會在一個特定的目錄上執行。

您可以使用 find 來處理所有內容,包括大小 ( man find):

-size n[cwbkMG]
         File uses n units of space.  The following suffixes can be used:
         `b'    for  512-byte blocks (this is the default if no suffix is used)
         `c'    for bytes
         `w'    for two-byte words
         `k'    for Kilobytes (units of 1024 bytes)
         `M'    for Megabytes (units of 1048576 bytes)
         `G'    for Gigabytes (units of 1073741824 bytes)

所以你可以這樣做:

find . -name "*.gz" -size -4k -mtime -1 -printf 'Failure %p\n'
find . -name "*.gz" -size -4k -mtime +1 -printf 'Success %p\n'

引用自:https://unix.stackexchange.com/questions/210351