【问题标题】:Ksh command to find files modified during last hourKsh 命令查找最近一小时内修改的文件
【发布时间】:2013-09-11 09:22:18
【问题描述】:

您能否告诉我最有效的命令,该命令可用于查找最近一小时(更准确地说是过去 60 分钟)在目录中修改的文件。

或者

如果方法不好,请告诉我如何将当前时间与文件创建/修改的时间戳进行比较

谢谢

【问题讨论】:

  • How to find the files that are created in the last hour in unix 的可能重复项[已创建、修改和访问的答案]
  • @ChrisJ 没有注意到,我实际上可以投票给它。但是,如果问题不同,它是否足够有效?毕竟一次搜索不会很快将用户重定向到它。
  • 嗨,在发布这篇新帖子之前,我实际上已经看到了该线程,-mmin 不适用于我的 ksh。不知道原因,甚至找不到它的手册页。

标签: shell scripting solaris ksh


【解决方案1】:

使用 find 的选项-newermt:

find -newermt 'now -1 hour'

或者干脆

find -newermt -1hour

在 find 的manual 中了解更多有关用法的信息。

ksh 的另一种方式:

BEFORE=$(date -d '-1 hour' '+%s'); find -type f -printf '%T@ %p\n' | while read -r TS FILE; do TS=${TS%.*}; [[ TS -ge BEFORE ]] && echo "$FILE"; done

不使用-d

BEFORE=$(( $(date '+%s') - 3600 )); find -type f -printf '%T@ %p\n' | while read -r TS FILE; do TS=${TS%.*}; [[ TS -ge BEFORE ]] && echo "$FILE"; done

【讨论】:

  • 我尝试执行更新的命令,但即使尝试使用各种组合也无济于事。
  • 我在收到通知后也进行了更新。我希望你能比较一下它已经是你正在使用的那个。
  • 嗨,我也收到了这个错误..bash-3.00$ BEFORE=$(date -d '-1 hour' '+%s');echo $BEFORE date: 非法选项 - -d 日期:非法选项--1 日期:非法选项--日期:非法选项--h 日期:非法选项--o 日期:非法选项--r 用法:日期[-u] mmddHHMM[[cc]yy] [.SS] 日期 [-u] [+format] 日期 -a [-]sss[.fff]
  • 嗨,感谢您参与此问题,但显然这些命令给出了我在上面发布的错误。
  • @user1809095 有什么错误吗?此外,请确保它不会等待具有有效匹配的文件,但仍会继续处理许多文件。
【解决方案2】:

这将适用于大多数符合现代 POSIX 标准的系统,使用 ksh[nn] 或 bash。

filetime=$(perl -e'
    use POSIX qw(strftime);
    $now_string = strftime "%Y%m%d%H%M.%S", localtime(time - 3601);  
    print $now_string, "\n";' )
touch -t $filetime /tmp/dummy     # here for verification
ls -l /tmp/dummy
find . -newer /tmp/dummy -exec ls -l {} \;

ls - l 命令用于向您展示“虚拟”,在您检查 touch 命令的作用后将其删除。

【讨论】:

    【解决方案3】:

    触摸一个时间戳为一小时的文件,并使用 find 的选项 -newer。 可以使用时区技巧(例如 GMT)计算触摸时间:

    echo "$(TZ=GMT+1 date +%Y-%m-%d)"
    

    所以你做类似的事情

    HOUROLDFILE=/tmp/hourold.tmp
    touch -t "$(TZ=GMT+1 date '+%y%m%d%H%M')" ${HOUROLDFILE}
    find a_directory -newer ${HOUROLDFILE}
    rm ${HOUROLDFILE}
    

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2022-01-18
      相关资源
      最近更新 更多