1小时前修改过的文件列表

时间:2014-11-17 08:10:31

标签: linux shell unix

嗨,我想要一个在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。

4 个答案:

答案 0 :(得分:3)

您可以使用此命令执行此操作。

$ find . -mtime -1

其中,

.是搜索路径

-mtime时间参数

-1列出过去1小时内修改过的文件

$ find . -amin -60

-amin时间参数(分钟)

-60列出过去1小时内修改过的文件

以下是我系统的输出:

enter image description here

答案 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"