我们有linux机器,我们想检查在特定日期范围之间添加了哪些新文件。
我只有SSH访问此框,它是openSUSE 11.1
是否有某种命令可以为我提供在04/05/2011和05/05/2011之间添加到文件系统的文件列表
由于
此致 加布里埃尔
答案 0 :(得分:35)
有很多方法可以做到这一点。
第一个:
start_date=201105040000
end_date=201105042359
touch -t ${start_date} start
touch -t ${end_date} end
find /you/path -type f -name '*you*pattern*' -newer start ! -newer end -exec ls -s {} \;
第二个: 查找20到21天前修改过的文件:
find -ctime +20 -ctime -21
查找在2500到2800分钟前修改过的文件:
find -cmin +2500 -cmin -2800
并阅读this topic。
答案 1 :(得分:2)
好吧,您可以使用find
获取在特定时间窗口中最后修改的所有文件的列表,但这不是您想要的。我不认为你只能从文件的元数据中找出它。
编辑:要列出文件及其修改日期,您可以将find
的输出通过xargs
传送到所有文件上运行ls -l
,这将显示修改时间
find /somepath -type f ... -print0 | xargs -0 -- ls -l
答案 2 :(得分:1)
我误解了你的问题。根据您使用的文件系统,它可能会也可能不会存储创建时间。
我的理解是ext2 / 3/4不存储创建时间,而是修改,更改(状态,略有不同)和访问时间。
另一方面,Fat32确实包含创建时间戳IIRC。
如果您使用的是ext文件系统,则看起来有两个选项:
1.找到在两个日期之间修改的所有文件(包括已创建的文件,以及刚刚编辑过的文件)。您可以使用find执行此操作。
2.创建一个脚本/ cronjob,它将以某个时间间隔记录文件系统的内容,例如
find / > filesystem.$(date +%s).log
然后运行差异以查看已添加的内容。当然,这会阻止您在开始制作这些日志之前向后看。
答案 3 :(得分:1)
您可以尝试以下方法之一:
find -newerct "1 Aug 2013" ! -newerct "1 Sep 2013" -ls
find . -mtime $(date +%s -d"Jan 1, 2013 23:59:59") -mtime $(date +%s -d"Jan 2, 2016 23:59:59")
find /media/WD/backup/osool/olddata/ -newermt 20120101T1200 -not -newermt 20130101T1400
find . -mtime +1 -mtime -3
find . -mtime +1 -mtime -3 > files_from_yesterday.txt 2>&1
find . -mtime +1 -mtime -3 -ls > files_from_yesterday.txt 2>&1
touch -t 200506011200 first
touch -t 200507121200 last
find / -newer first ! -newer last
#!/bin/bash
for i in `find Your_Mail_Dir/ -newermt "2011-01-01" ! -newermt "2011-12-31"`; do
mv $i /moved_emails_dir/
希望这有帮助。