Find-command: поиск с созданным временем

Как я могу найти созданные вещи "30 июля 04:37" и переместить их в /tmp? Что-то не так:

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

Ответ 1

См. руководство 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 является текущим).

Ответ 2

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

Ответ 3

Я не уверен, почему вы используете синтаксис exec {} +... Как насчет этого:

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