【问题标题】:Finding files modified within an hour of another file查找在另一个文件一小时内修改的文件
【发布时间】:2012-10-04 12:46:56
【问题描述】:

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

我和终端里的文件在同一个目录,所有文件都是setuid权限

我一直在尝试:

找到 . -type f -perm -4000 -newer 2.txt -mmin -60 -print

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

在 2.txt 之前或之后一小时内创建的文件有什么用处?

【问题讨论】:

    标签: linux unix find


    【解决方案1】:

    这是我的逻辑-

    在某个变量中,自 Epoch 以来首次获取文件的最后访问时间(以秒为单位)。

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

    获取上一小时的时间(即返回 3600 秒)

    one_hr_old_time_in_sec=`expr $time_in_sec - 3600`
    

    转换成适合查找命令的格式

    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。
    老实说,我还没有尝试过。希望它有效!

    【讨论】:

      【解决方案2】:

      试试这个

      触摸 /tmp/temp -t time1

      touch /tmp/ntemp -t time2

      找到 . -较新的 /tmp/temp -a ! -较新的 /tmp/ntemp -exec ls -l {} \; 2>/dev/null

      在哪里

      time1 = 文件创建时间 - 1hr

      time2 = 文件创建时间 + 1hr

      例如:

      时间1 = 201210041500

      时间2 = 201210041700

      【讨论】:

        【解决方案3】:

        之前的解决方案可以简化,因为 -newermt 应接受与“日期”相同的格式,包括自纪元以来 N 秒的 @N。

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

        所以查找文件修改+或-1小时2.txt的命令是

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

        【讨论】:

          【解决方案4】:

          如果您在下午 4 点之后运行此程序,以您的示例为例,它不会返回 3.txt 是有道理的,因为 -newer 2.txt -mmin -60 表示“在过去 60 分钟内修改,并且比 2.txt 更新”,不是“在2.txt 之后不到 60 分钟修改”。我不认为find 目前可以选择做你想做的事(至少我的版本没有),但在pythonperl 中编写脚本应该不会太难。

          【讨论】:

            猜你喜欢
            • 2011-11-18
            • 2013-09-11
            • 2013-02-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多