如何查找在UNIX中最近一小时创建的文件


134

如何查找在UNIX中最近一小时创建的文件

Answers:


212

如果要搜索的目录srch_dir

$ find srch_dir -cmin -60 # change time

要么

$ find srch_dir -mmin -60 # modification time

要么

$ find srch_dir -amin -60 # access time

显示在过去一个小时内创建,修改或访问的文件。

校正:ctime用于更改节点时间(虽然不确定,请指正我)


2
一切都很好,但是这些标志在find我使用的Solaris 上不存在。OP说Unix,我认为这些只是Linux。
jiggy 2014年

11
诀窍是使用时间值!在手册页中不是很明显。
sphakka

@jiggy Ayush的答案给出了一种-newer应基于Solaris的技术(基于)。
David Moles

3
-cmin不是创建时间,而是更改时间!刚刚删除了.config dir原因,因为在测试运行中,它在最近X分钟内没有更改,而当我执行rm时,它是...。所以也许编辑此内容...!
Badmaster

我仍然认为第一个示例注释需要修订。“更改时间”是文件状态,而不是文件数据
KC Baltz

24

UNIX文件系统(通常)不存储创建时间。相反,只有访问时间,(数据)修改时间和(inode)更改时间。

话虽这么说,find-atime -mtime -ctime前提是:

$男人1 找到
...
-ctime   n
        如果最后一次更改时间是
        从初始化时间中减去文件状态信息,
        除以86400(除掉所有余数)就是n。
...

因此find -ctime 0,在不到一个小时之前,查找索引节点已更改的所有内容(例如,包括文件创建,但还要计算链接数和权限以及文件大小的更改)。


86400秒是一天,而不是一个小时。因此,对-ctimeetc 的争论是以为单位,而不是以小时为单位。
加隆

12

请查看此链接,然后帮助自己。

基本的代码是

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg

谢谢,但是这只会搜索t.tmp。如果我想查找上一个小时创建的所有文件怎么办。
Ankur

2
Ankur:它将创建一个临时文件t.tmp并将其创建时间设置为2小时前...之后,它将在当前目录中搜索所有在t.tmp之后创建的文件,即最近2个小时内的文件。–
ayush

4
凉!!尽管没有必要使用第一个命令。touch如果文件尚不存在,则创建该文件。
阿米尔·乌瓦


3
sudo find / -Bmin 60

man页面:

-Bmin n

如果文件的inode创建时间find与开始时间之间的时间差(四舍五入到下一整分钟)为n分钟,则为true 。

显然,您可能需要进行一些不同的设置,但是此主目录似乎是搜索最近N分钟内创建的任何文件的最佳解决方案。


find (GNU findutils) 4.6.0没有-B谓词
blockloop

0

查看此链接以获取更多详细信息。

要在当前目录中查找最近一小时内创建的文件,可以使用-amin

找 。-amin -60 -f型

这将查找最近1个小时内使用创建的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.