find-command: search with created time

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

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

Upvotes: 3

Views: 6021

Answers (3)

Jonathan Leffler
Jonathan Leffler

Reputation: 753870

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 the 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 was current in July 2009; 4.9.0 is current in November 2023).

Note that classic and POSIX mv expects the target directory to be the last argument. The GNU mv(1) command has the extraordinarily useful -t directory option that allows you to use:

find … -exec mv -t /tmp {} +

If there were several files to move, the mv {} /tmp + in the question would not work, as noted by Arkady in their answer.

Also note that historical Unix systems and current Linux systems do not record the "birth time" of a file — but macOS does and has done for a decade or so. The recorded times are access time ("atime"), data modification time ("mtime") and inode modification time ("ctime"). That's what you've got — "mtime" is usually the best choice, but YMMV.

Upvotes: 5

Arkady
Arkady

Reputation: 15059

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

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

Upvotes: 1

ennuikiller
ennuikiller

Reputation: 46965

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

Upvotes: 2

Related Questions