2012-10-04 33 views
3

如果我有3个文件,例如1.txt,2.txt和3.txt,它们分别创建一个小时,分别为下午1点,下午2点和下午3点。我需要的是一个命令,它可以查找在特定文件一小时内修改过的所有文件。查找在另一个文件的一个小时内修改的文件

我在同一目录作为终端的文件和所有的文件都是很setuid权限

我一直想:

发现。型的F -perm -4000 -newer 2.txt -mmin -60 -print

这应返回3.txt但是它没有

什么会使用文件中的小时或2日后创建。文本?

回答

0

如果您在下午4点后运行这个,因为你的榜样,它是有道理的,它不会返回3.txt,为-newer 2.txt -mmin -60机构“最近60分钟修改,最近更比2.txt”,而不是“修改小于在2.txt后60分钟“。我不认为find目前有选择做你想做的事情(至少,我没有的版本),但是在pythonperl中编写脚本应该不会太难。

1

这里是我的逻辑 - 文件的纪元以来的秒数某些变量上次访问

首先得到的时间。

time_in_sec=$(stat -c %X 2.txt) 

获取最后一个小时的时间(举例来说,3600秒回)

one_hr_old_time_in_sec=`expr $time_in_sec - 3600` 

转换成适合find命令格式原始文件的

newerthan=$(date -d @$one_hr_old_time_in_sec '+%m-%d-%y%n %H:%M:%S') 

转换时间,适合的格式找到命令

olderthan=$(date -d @$time_in_sec '+%m-%d-%y%n%H:%M:%S') 

使用find命令

find . -newermt "$newerthan" ! -newermt "$olderthan" -print 

如果一切正常,你可以写一个小的shell脚本,将文件名作为参数,可以尝试+ 3600还可以得到两个时间段之间修改的文件列表。
老实说,我还没有尝试过。希望它有效!

1

试试这个

触摸的/ tmp /临时-t时间1

触摸的/ tmp/NTEMP -t时间2

发现。 -newer/tmp/temp -a!-newer/tmp/ntemp -exec ls -l {} \; 2>的/ dev/null的

其中

TIME1 =时间文件创建的 - 1小时

TIME2 =文件创建+ 1小时

实施例的时间:

TIME1 = 201210041500

time2 = 201210041700

1

以前所以因为-newermt应该接受与'date'相同的格式,包括@N,自epoch开始N秒。

对于'stat'命令,最好使用-Y(上次修改时间)而不是-X(上次访问时间)。

于是命令来查找文件修改+或 - 2小时2.txt是

N=$(stat -c %Y 2.txt) 
find . -newermt @$((N-3600)) ! -newermt @$((N+3600)) -print 
相关问题