3

How can I find things created "Jul 30 04:37" and move them to /tmp? Something wrong:

find .  -ctime "0037043007" -exec mv {} /tmp +
Léo Léopold Hertz 준영
  • 134,464
  • 179
  • 445
  • 697

3 Answers3

5

See the GNU find manual (and the time input formats information too).

In particular, the -newerct '30-Jul-2009 04:37' option seems to do most of what you want.

The only snag is that the man page implies that it works for files strictly newer than given time. That suggests you need to use the absolute time:

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

-newerct @1248957000

This still leaves the problem of how to deal with the strictly greater than semantics.

-newerct @1248956999 -a ! -newerct @1248957001

This works, but is indisputably messy (and assumes you have tools to obtain the Unix timestamp from a date/time value).

You need a new enough version of find for this to work (GNU findutils 4.4.2 is current).

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
2
for file in $(ls -lR | grep "Jul 14" | awk '{print $9}')
do
mv $file /tmp
done
ennuikiller
  • 46,381
  • 14
  • 112
  • 137
0

I am not sure why you are using the "exec {} +" syntax... How about this:

find . -ctime "0037043007" -exec mv \{} /tmp/ \;
Arkady
  • 14,305
  • 8
  • 42
  • 46