1

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

有人有这样的吗?

我试过了

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

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

提前谢谢你 - 我不是专家,这是我迄今为止发现的。这是相对紧急的,因为我需要这个来修复上周发生的被黑文件。

4

2 回答 2

0

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" = "MODIFY" ] && echo '文件已修改!'

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

# ETC...

于 2013-01-25T21:12:45.673 回答
0

来自http://content.hccfl.edu/polllock/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 小时前。使用%TDand%Tr而不是%ADand%Ar来获取修改时间(而不是访问时间)。

最终的命令将是:

find / -daystart -mtime -30 -printf "%TD %Tr - %p\n" 2> /dev/null | sort -r > /lastmodified.txt

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

于 2012-11-29T19:10:00.677 回答