我需要一个 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 '文件已删除!
# 等等...