如果我有3个文件,例如1.txt,2.txt和3.txt,它们分别创建一个小时,分别为下午1点,下午2点和下午3点。我需要的是一个命令,它可以查找在特定文件一小时内修改过的所有文件。查找在另一个文件的一个小时内修改的文件
我在同一目录作为终端的文件和所有的文件都是很setuid权限
我一直想:
发现。型的F -perm -4000 -newer 2.txt -mmin -60 -print
这应返回3.txt但是它没有
什么会使用文件中的小时或2日后创建。文本?
如果我有3个文件,例如1.txt,2.txt和3.txt,它们分别创建一个小时,分别为下午1点,下午2点和下午3点。我需要的是一个命令,它可以查找在特定文件一小时内修改过的所有文件。查找在另一个文件的一个小时内修改的文件
我在同一目录作为终端的文件和所有的文件都是很setuid权限
我一直想:
发现。型的F -perm -4000 -newer 2.txt -mmin -60 -print
这应返回3.txt但是它没有
什么会使用文件中的小时或2日后创建。文本?
如果您在下午4点后运行这个,因为你的榜样,它是有道理的,它不会返回3.txt
,为-newer 2.txt -mmin -60
机构“最近60分钟修改,最近更比2.txt
”,而不是“修改小于在2.txt
后60分钟“。我不认为find
目前有选择做你想做的事情(至少,我没有的版本),但是在python
或perl
中编写脚本应该不会太难。
这里是我的逻辑 - 文件的纪元以来的秒数某些变量上次访问
首先得到的时间。
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还可以得到两个时间段之间修改的文件列表。
老实说,我还没有尝试过。希望它有效!
试试这个
触摸的/ 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
以前所以因为-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