Linux命令检查文件系统中的新文件

时间:2011-05-05 06:51:03

标签: linux

我们有linux机器,我们想检查在特定日期范围之间添加了哪些新文件。

我只有SSH访问此框,它是openSUSE 11.1

是否有某种命令可以为我提供在04/05/2011和05/05/2011之间添加到文件系统的文件列表

由于

此致 加布里埃尔

4 个答案:

答案 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/

希望这有帮助。