I\'m trying to us the following command on Mac OSX 10.6 Terminal but it does not work..Any idea what I may be doing wrong?
These work...
List most recent
You're moving the newest file. Try
mv `ls -t |tail -1` newdirname
or
mv `ls -tr |head -1` newdirname
Working on my Ubuntu's bash.
Assuming the files you are moving are in the current directory:
mv "`ls -1t | tail -1`" dir_to_move_to
the quote help for spaces in filename, but I don't think my answer is elegant, any more elegant solution?
Adding the parameter -1
to your ls
will fix that. Seems like osx' ls doesn't check correctly whether it prints to a terminal or a pipe..
I found the another answer for the problem. The best to use find command instead of using ls command. It would help to find the oldest file and can use mv command to move to another directory.
mv $(find /home/balaji/work/ -type f -printf '%T+ %p\n' | sort | head -1) /home/balaji/regular_archieve
find
– Search for files in a directory hierarchy.
/home/balaji/work/
– Search location.
/home/balaji/regular_archieve/
– Target location.
type -f
– Searches only the regular files.
-printf ‘%T+ %p\n’
– Prints the file’s last modification date and time in separated by + symbol. (Eg. 2015-07-22+13:42:40.0000000000). Here, %p indicates the file name. \n indicates new line.
sort | head -n 1
– The sort command sorts the output and sends the output to head command to display the oldest file. Here, -n 1 indicates only one file i.e oldest file.