查找修改后的文件并将它们回显到服务器根目录上的 txt 文件中



我需要一个 shell 命令来显示整个服务器上最后修改的文件和新文件(递归),并将它们回显到根目录中的 txt 文件中。

有没有人这样的事情?

我试过了

find / - mmtime 30 -printf "%AD %Ar - %pn" 2> /dev/null | sort -r > /lastmodified.txt

将过去 30 天内所有已修改文件的所有名称发布到 root 中的 TXT 文件中,但它只显示服务器本身的文件,而不是我的网站上传到的目录。

提前感谢您 - 我不是专家,这是我到目前为止发现的。这是相对紧迫的,因为我需要它来修复上周发生的被黑客入侵的文件。

从 http://content.hccfl.edu/pollock/Unix/FindCmd.htm:

find . -mtime 0   # find files modified within the past 24 hours
find . -mtime -1  # find files modified within the past 24 hours
find . -mtime 1   # find files modified between 24 and 48 hours ago
find . -mtime +1  # find files modified more than 48 hours ago

确保您只有一个"m"和一个减号,-mtime -30 ,如 chorobas 评论中所建议的那样,以获得最近 30 天。 -mtime 30只会提供正好 30 天前的文件。

您可能希望使用选项 -daystart 获取从午夜开始的最近 30 天的文件,而不仅仅是 30*24 小时前的文件。使用 %TD%Tr 而不是 %AD%Ar 来获取修改时间(而不是访问时间)。

然后,最后一个命令将是:

find / -daystart -mtime -30 -printf "%TD %Tr - %pn" 2> /dev/null | sort -r > /lastmodified.txt
请注意,排序

将在 1 月中断,因为 12 在 01 之前排序。如果要确保日期始终按顺序排列,请使用例如时间定义%T+ (2012-11-29+21:07:41.00000000000) 或%Tu/%Tm/%Td %TH:%TM (12/11/29 21:07)

inotify-tools 呢

https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting

http://linux.die.net/man/1/inotifywait


inotifywait 示例 2

#!/bin/sh

EVENT=$(inotifywait --format '%e' ~/file1)

[ $? != 0 ] && 退出

[ "$EVENT" = "修改" ] &&echo '文件已修改!

[ "$EVENT" = "DELETE_SELF" ] &&echo '文件已删除!

# 等等...

最新更新