Bash 脚本检测昨天修改的文件并检查其大小是否高于特定阈值

Bash 脚本检测昨天修改的文件并检查其大小是否高于特定阈值

我正在为stat目录中的所有文件编写一个脚本,然后查找昨天创建的特定文件并告诉我它们是否大于特定大小。

所以基本上我需要这个来找到该文件,这是一个 .gz 类型的文件(并且应该至少在 24 小时前进行最后修改)并让它检查其大小以确保它不低于某个数字,例如 4 KB例子。如果是,在 4 KB 大小以下,它需要回显“失败”或类似的内容,如果高于该阈值,则需要回显“成功”或类似的内容。

最终,如果失败或成功,我会让它发送一封电子邮件。

到目前为止,我已经列出了所有文件并查找了过去 24 小时内修改过的文件,但由于我是个新手,此时我迷失了:

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

我现在正在运行我的整个计算机,但它最终将在特定目录上运行。

答案1

您可以使用 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'

相关内容