我正在为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'