![如何获取过去 24 小时内新创建(未更改或修改)和删除的文件](https://linux22.com/image/62361/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E8%BF%87%E5%8E%BB%2024%20%E5%B0%8F%E6%97%B6%E5%86%85%E6%96%B0%E5%88%9B%E5%BB%BA%EF%BC%88%E6%9C%AA%E6%9B%B4%E6%94%B9%E6%88%96%E4%BF%AE%E6%94%B9%EF%BC%89%E5%92%8C%E5%88%A0%E9%99%A4%E7%9A%84%E6%96%87%E4%BB%B6.png)
我想编写一个需要以下功能的脚本:
列出过去 24 小时内创建的所有文件。如果我给出
find
带有选项的命令ctime
,那么它会列出所有已更改的文件(权限和获胜者)find . -ctime -1
但我需要过去 24 小时内创建的未修改或更改的新文件列表。
列出过去 24 小时内删除的所有文件。如果我删除了任何文件,那么我如何获取这些文件名。
如何获取文件的诞生时间(创建时间)。命令中有一种格式
stat
给出文件的诞生时间%w Time of file birth, human-readable; - if unknown
%W Time of file birth, seconds since Epoch; 0 if unknown
abc@123:# stat -c %w tzls.txt - abc@123:#
但它没有给出任何输出。我的linux文件系统是ext3。
答案1
您无法在许多 Linux 文件系统上直接执行此操作,因为“created”属性根本不存在。您可能想阅读其中一些链接
如果您确实需要查找已被删除的文件已创建在过去 24 小时内,与过去 24 小时内发生的情况不同创建或更改,你有两个选择:
find
1 切换到支持创建日期的文件系统,并使用和的组合stat --format '%w'
来获取此类文件的列表
2find / -type f
每 24 小时运行一次,并将当前运行结果与上次运行结果进行比较。像这样的东西可以工作,每 24 小时运行一次:
#!/bin/bash
#
test -f /tmp/today && mv -f /tmp/today /tmp/yesterday
find / -type f | sort > /tmp/today
test -f /tmp/yesterday && comm -13 /tmp/yesterday /tmp/today