查找命令:按创建时间搜索

3

我该如何查找创建于“Jul 30 04:37”的文件并将它们移动到 /tmp 目录下?有些问题:

find .  -ctime "0037043007" -exec mv {} /tmp +
3个回答

5

请参阅GNU find手册(还有时间输入格式的信息)。

特别是,-newerct '30-Jul-2009 04:37'选项似乎可以实现大部分你想要的功能。

唯一的问题是手册暗示它只适用于比给定时间严格更新的文件。这意味着你需要使用绝对时间:

1248957000 = 2009-07-30 05:30:00  (TZ = US/Pacific = UTC-07:00)

-newerct @1248957000

这仍然存在一个问题,即如何处理严格大于的语义。
-newerct @1248956999 -a ! -newerct @1248957001

这个方法可行,但显然有点混乱(并且假设你拥有工具从日期/时间值中获取Unix时间戳)。
你需要一个足够新的find版本才能使其正常工作(GNU findutils 4.4.2 是当前版本)。

我在这里开了一个有关时间戳的新问题:https://dev59.com/onM_5IYBdhLWcg3w2W9g。对我来说,它们是新的。 - Léo Léopold Hertz 준영
我不太明白。在-newerct中,c代表inode状态更改时间,即ctime。所以它似乎不是创建(出生)日期。 - undefined
@马丁:当我写下这个答案的时候,我觉得即使是当时的MacOS X也不支持文件系统中的“创建时间”,但现在它已经支持并且已经有大约十年的历史了。据我所知,Linux文件系统仍然不支持“创建时间”。你可以选择inode更改时间作为使用的值,但你可以使用访问时间、数据修改时间和inode修改时间来处理。 - undefined

2
for file in $(ls -lR | grep "Jul 14" | awk '{print $9}')
do
mv $file /tmp
done

请注意,我的目标已更新。我知道这些文件,但我无法按照创建时间的条件移动它们。 - Léo Léopold Hertz 준영
特定创建时间,不小于或大于。 - Léo Léopold Hertz 준영

1
我不确定你为什么要使用 "exec {} +" 语法... 这样怎么样:
find . -ctime "0037043007" -exec mv \{} /tmp/ \;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接