查找已修改的文件并将其回显到服务器根目录下的txt文件中

时间:2012-11-29 14:46:29

标签: linux file shell echo

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

有人这样吗?

我试过

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

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

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

2 个答案:

答案 0 :(得分:0)

来自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

确保在-mtime -30中只有一个'm'和一个减号,正如chorobas评论中所建议的那样,才能获得最近30天。 -mtime 30将在30天前准确提供文件。

您可能希望使用选项-daystart来获取从午夜开始的最近30天的文件,而不是仅仅30 * 24小时之前。使用%TD%Tr代替%AD%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)

答案 1 :(得分: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”=“修改”]&& echo'file modified!'

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

#etc ......