请告诉我最有效的命令,可用于查找过去一小时内(最近60分钟)目录中修改的文件。
或
如果不是很好的方法那么请告诉我如何将当前时间与文件创建/修改的时间戳进行比较
谢谢
答案 0 :(得分:0)
使用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
答案 1 :(得分:0)
这适用于大多数现代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
命令显示“虚拟”,在检查触摸命令的作用后将其删除。
答案 2 :(得分:0)
触摸时间戳为1小时的文件,然后使用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}