1小时前修改的文件列表

嗨,我想在60分钟内修改文件的列表。

bash-3.2$ find . -mmin 60 -type f find: bad option -mmin find: [-H | -L] path-list predicate-list bash-3.2$ /usr/xpg4/bin/find . -mmin 60 -type f /usr/xpg4/bin/find: bad option -mmin /usr/xpg4/bin/find: [-H | -L] path-list predicate-list bash-3.2$ utibbwdev1#uname -a SunOS utibbwdev1 5.10 Generic_150400-13 sun4v sparc SUNW,T5240 

我收到上述错误。 我的操作系统是太阳版5.10。

Solutions Collecting From Web of "1小时前修改的文件列表"

你可以用这个命令来做到这一点。

 $ find . -mtime -1 

哪里,

. 是搜索路径

-mtime时间参数

-1列出最近1小时内修改的文件

 $ find . -amin -60 

-amin分钟时间参数(分钟)

-60列出最近1小时内修改的文件

这里是我的系统输出:

在这里输入图像说明

查找命令可以做到这一点。

 find . -newermt "1 hour ago" 

你可以用-type f来进一步过滤它

因为你在SunOS上 ,可能你没有使用GNU find ,所以-mmin选项是不允许的。 尝试

 find -mtime -1 

从现在开始的1小时之内(这是数字前面的减号的含义)获得修改时间的文件/目录。 GNU发现使得可以在几分钟内要求时间作为正常查找的扩展。

另外,手册页是非常有用的,但也许,如果你的系统上安装了GNU findutils包,你必须在做一些PATH调整之前,得到正确的查找程序。 只要看看GNU utils通常安装在/ opt / gnu目录下,那么你需要把这个目录放在PATH 之前的正常bin目录下。 一个好的方法来检查这是做的

 which find 

它会告诉你它正在使用哪个文件系统以及文件系统的位置。 一个常见的错误是将man页面放在MANPATH环境变量中,而最后放在PATH变量中,所以你从GNU findutils软件包中获得了manpage,但是执行了标准的系统命令。 在SunOS中发现来自Berkeley Unix并且与GNU无关。

对于一个POSIX兼容的方法,你可以使用awk减去一个小时之后的时间,使用时间来创建一个临时文件,并使用find-newer操作数来比较文件和临时文件。

 TIME=`date "+%Y %m %d %H %M" | awk ' BEGIN{split("31 28 31 30 31 30 31 31 30 31 30 31",M)} { if ($4 == 0) { # hour underflow if ($3 == 1) { # day underflow if ($2 == 1) { # month underflow $1--; $2 = 12; } else $2--; if ($1 % 4 == 0 && $2 == 2) $3 = 29; # leap year else $3 = M[$2]; } else $3--; $4 = 23; } else $4--; printf "%04u%02u%02u%02u%02u\n", $1, $2, $3, $4, $5; }'` touch -t "$TIME" some-temporary-file find . -type f -newer some-temporary-file rm some-temporary-file 

要获取临时文件名,您可以使用mktemp等实用程序,您可以指定一个文件,也可以将随机数添加到文件名中。

find的几个版本都有-mmin扩展,或者类似的东西。

 find . -type f -mmin -60 

date某些版本具有可变的输出。

 FILE=`mktemp -t one-hour-ago-` touch -t `date -v -1h +%Y%m%d%H%M` "$FILE" find . -type f -newer "$FILE" rm "$FILE" 

有些版本的touch有调整标志。

 FILE=`mktemp -t one-hour-ago-` touch "$FILE" touch -A -010000 "$FILE" find . -type f -newer "$FILE" rm "$FILE"