代码之家  ›  专栏  ›  技术社区  ›  Léo Léopold Hertz 준영

find命令:使用创建时间搜索

  •  2
  • Léo Léopold Hertz 준영  · 技术社区  · 15 年前

    我如何找到“7月30日04:37”创建的东西并将它们移动到/tmp?有问题:

    find .  -ctime "0037043007" -exec mv {} /tmp +
    
    3 回复  |  直到 15 年前
        1
  •  4
  •   Jonathan Leffler    15 年前

    看GNU find 手动(和) time input formats 信息也是如此)。

    尤其是, -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是当前的)。

        2
  •  2
  •   ennuikiller    15 年前
    for file in $(ls -lR | grep "Jul 14" | awk '{print $9}')
    do
    mv $file /tmp
    done
    
        3
  •  0
  •   CrashCodes    15 年前

    我不知道你为什么要用 exec {} + “语法…这个怎么样?

    find . -ctime "0037043007" -exec mv \{} /tmp/ \;