嗨,我想要一个在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
我收到了上述错误。我的操作系统是sun版本5.10。
答案 0 :(得分:3)
您可以使用此命令执行此操作。
$ find . -mtime -1
其中,
.
是搜索路径
-mtime
时间参数
-1
列出过去1小时内修改过的文件
也
$ find . -amin -60
-amin
时间参数(分钟)
-60
列出过去1小时内修改过的文件
以下是我系统的输出:
答案 1 :(得分:2)
查找命令可以做到这一点。
find . -newermt "1 hour ago"
您可以使用-type f
答案 2 :(得分:1)
当您使用 SunOS 时,可能您没有使用 GNU查找,因此不允许使用-mmin
选项。尝试
find -mtime -1
从1小时后得到修改时间的文件/目录(数字前面的减号的含义)。 GNU发现可以在几分钟内询问时间作为正常查找的扩展。
此外,手册页非常有用,但是,如果您的系统上安装了 GNU findutils 软件包,则必须先进行一些PATH
调整才能获得正确的找到程序调用。看看GNU utils通常安装在/ opt / gnu目录下,你需要将该目录放在PATH 之前正常bin目录中。检查这个的好方法是
which find
它将告诉您它正在使用哪个以及它所在的文件系统中的位置。一个常见的错误是将man page放在MANPATH环境变量的第一位,但最后在PATH变量中,所以你从GNU findutils包中获取联机帮助页,但执行标准系统命令。在SunOS中查找来自Berkeley Unix并且与GNU无关。
答案 3 :(得分:1)
对于与POSIX兼容的方法,您可以使用touch
创建一个临时文件,使用date
减去一小时,然后使用awk
' s find
将文件与临时文件进行比较。
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
要获取临时文件名,您可以使用-newer
operand等实用程序,您可以指定文件,也可以将随机数附加到文件名。
mktemp
的相当多个版本具有-mmin
扩展名,或类似名称。
find . -type f -mmin -60
某些版本的find
具有可变输出。
FILE=`mktemp -t one-hour-ago-`
touch -t `date -v -1h +%Y%m%d%H%M` "$FILE"
find . -type f -newer "$FILE"
rm "$FILE"
某些版本的date
有调整标记。
FILE=`mktemp -t one-hour-ago-`
touch "$FILE"
touch -A -010000 "$FILE"
find . -type f -newer "$FILE"
rm "$FILE"