如何使用“查找”来搜索特定日期创建的文件? [关闭](How to use 'find&

2019-08-19 09:31发布

如何使用UNIX命令find来搜索特定日期创建的文件?

Answer 1:

正如马克斯指出的那样,你可以没有,但是检查修改或访问的文件是不是所有的辛苦。 我写了一个教程关于这一点,迟至今日。 其实质是利用-newerXY! -newerXY ! -newerXY

例如:要找到修订于2007年6月7日的所有文件:

$ find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08

为了找到对2008年9月29日访问的所有文件:

$ find . -type f -newerat 2008-09-29 ! -newerat 2008-09-30

或者,它有自己的许可文件,改变在同一天:

$ find . -type f -newerct 2008-09-29 ! -newerct 2008-09-30

如果你没有在文件上更改权限,“C”通常对应于创建日期,但。



Answer 2:

find location -ctime time_period

TIME_PERIOD的例子:

  • 30多天前: -ctime +30

  • 不到30天前: -ctime -30

  • 整整30天前: -ctime 30



Answer 3:

这两个步骤,但我喜欢做这种方式:

首先创建一个特定的日期/时间的文件。 在这种情况下,该文件是2008-10-01午夜

touch -t 0810010000 /tmp/t

现在,我们可以发现,比上面的文件新还是旧,所有文件(通过文件去修改日期。您还可以使用-anewer用于访问和-cnewer文件状态更改)。

find / -newer /tmp/t
find / -not -newer /tmp/t

您还可以看看某些日期之间的文件通过创建两个文件触摸

touch -t 0810010000 /tmp/t1
touch -t 0810011000 /tmp/t2

这将找到两个日期和时间之间的文件

find / -newer /tmp/t1 -and -not -newer /tmp/t2


Answer 4:

你可以这样做:

find ./ -type f -ls |grep '10 Sep'

例:

[root@pbx etc]# find /var/ -type f -ls | grep "Dec 24"
791235    4 -rw-r--r--   1 root     root           29 Dec 24 03:24 /var/lib/prelink/full
798227  288 -rw-r--r--   1 root     root       292323 Dec 24 23:53 /var/log/sa/sar24
797244  320 -rw-r--r--   1 root     root       321300 Dec 24 23:50 /var/log/sa/sa24


Answer 5:

你不能。 -c开关告诉你什么时候该权限上次修正,-a测试最近的访问时间和-m测试修改时间。 通过Linux操作系统(EXT3)的最香精使用的文件系统不支持“创建时间”的纪录。 抱歉!



Answer 6:

@Max:是说得对的创建时间。

但是,如果你要计算所经过的天争论的一个-atime-ctime-mtime参数,你可以用下面的表达式

ELAPSED_DAYS=$(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))

与任何你想要的日期和ELAPSED_DAYS将被设置为天,然后与当今的数字替换为“2008-09-24”。 (更新:减一的结果与校准find的日期取整。)

因此,要找到修订于2008年9月24日的任何文件,命令为:

find . -type f -mtime $(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))

这将工作,如果你的版本find不支持-newerXY在@Arve提到谓词:的答案。



Answer 7:

随着-atime,-ctime和-mtime交换机发现,你可以得到接近你想要达到的目标。



Answer 8:

cp `ls -ltr | grep 'Jun 14' | perl -wne 's/^.*\s+(\S+)$/$1/; print $1 . "\n";'` /some_destination_dir


Answer 9:

我发现这个scriplet在删除14天以上的所有文件的脚本:

CNT=0
for i in $(find -type f -ctime +14); do
  ((CNT = CNT + 1))
  echo -n "." >> $PROGRESS
  rm -f $i
done
echo deleted $CNT files, done at $(date "+%H:%M:%S") >> $LOG

我觉得有点额外的“找人”,并寻找-ctime / -atime等参数将帮助你在这里。



文章来源: How to use 'find' to search for files created on a specific date? [closed]
标签: bash unix find