find and move


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users find and move
# 1  
Old 06-24-2005
find and move

Hello I am new to this board.

I was looking for a one line command to find the oldest 10,000 files in a directory and move them.

I tried such things as:

find . -type f | ls -ltr | head -n 10000 -exec mv {} directory/ \;

find . -type f | ls -ltr | head -n 50 | xargs mv directory/ \;

I could create a list and find the 10001 st file and use ! -newer or a for loop but there must be a one line solution.


Thanks in advance

Natasha
# 2  
Old 06-26-2005
I think your logic is flawed with your find example.


Code:
find . -type f | ls -ltr | head -n 10000 -exec mv {} directory/ \;

This runs the 'ls -ltr' command on ONE FILE then it runs 'head -n 10000' on that ONE FILE. And since you've passed the rest of your find command arguments (the '-exec mv {} directory/ \;' part) are being passed as arguments to the head command you're getting nowhere fast.

I suggest you pick a cutoff date for old files in that directory. Then use the find command to move those.

Something like this:

Code:
/usr/bin/find . -mtime +130 -type f -xdev -exec mv {} /some/other/dir/  \;

So here we've moved all files that haven't been modified in at least 130 days to /some/other/dir/.

The '-xdev' prevents us from searching other filesystems within the current mountpoint. If you wish to search those filesystems then simply remove the '-xdev'.

Please test your command with a different variation of the find example above before you run this on your live system to make sure it does what you expect.

Something like this perhaps:

Code:
/usr/bin/find . -mtime +130 -type f -xdev -ls

Simply shows you which files meet the criteria you specified in the find command.

And then run 'man find' and read all that.

Good Luck.
# 3  
Old 08-25-2005
Erroring out ~~

I'm using this following command but its erroring out !!
find /home/xxx/yyy/ . -mtime -7 -type f -exec mv {} /home/xxx/yyy/zzz/

" find: 0652-018 An expression term lacks a required parameter. " -- This is the error i get... My basic requirement here is to move files which are 7 days old !!...

I have tried at the prompt also giving same command but same error is popping up. please suggest what might be the problem here..
# 4  
Old 08-25-2005
don't forget the \; at the end of the exec command. It always errors out unless it is there. You also have an extra . in the command.

find /home/xxx/yyy/ -mtime -7 -type f -exec mv {} /home/xxx/yyy/zzz/ \;
# 5  
Old 08-25-2005
still erroring

Nopes still erroring out !!!!...
find: 0652-018 An expression term lacks a required parameter.
# 6  
Old 08-26-2005
I might be wrong, but I don't think /usr/bin/find is needed to accomplish what OP wanted:

ls -lrt (or, alternatively "-1rt")

gives a list of files sorted ascendingly by modification date, therefore:

ls -1rt | head -10000 | while read file ; do mv $file /somewhere/else ; done

should do the trick. If there are subdirectories and these should be excluded things get a bit more complicated. Replace the "ls -1rt" above with:

ls -lrt | grep "^-" | sed 's/[<space><tab>][<space><tab>]*/<space>/g' | cut -d' ' -f9

I concede, the second is a bit of a stretch of a "one-liner". Replace "<space>" and "<tab>" with literal tabs and spaces respectively.

bakunin
# 7  
Old 05-30-2006
You can try to add \ to the end of the line. I got it from the following thread in forum.

e.g. /usr/bin/find . -mtime +130 -type f -exec mv {} /some/other/dir/ \\\;

http://nixdoc.net/files/forum/about48417.html
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find and Move files

I have the below command to delete all .xml files older than 90 days find . -type f -name '*.xml' -mtime +90 -exec rm {} \; What will be the command to move all the .xml files older than 90 days to this folder -> "/tmp/my_bk" My OS: SunOS my-pc 5.10 Generic_150400-17 sun4v sparc... (4 Replies)
Discussion started by: mohtashims
4 Replies

2. Shell Programming and Scripting

Find and move command with exec

Hi all, I am trying to find files newer than a given file and them mv them to a new location. So I far I have: find . ! -newer <file_name> -exec ls -l {} \; and find . ! -newer <file_name> -exec mv /TEMP_LOCATION {} \; find is not liking this. Anyone know how to modify the last... (2 Replies)
Discussion started by: jonnyd
2 Replies

3. Debian

How to find and move boot sectors?

Hi A mismatch occurred on my system (Debian, Sid). I've got 3 disks sda, b, c. Unfortunately, when I was adding a third disk (sdc) it all finished so that both sdb and sdc now have a boot flag. So, the first thing I would like to find out is which disk the system now boots from: sdb or sdc? In... (0 Replies)
Discussion started by: mladen
0 Replies

4. Red Hat

Find and move

Greetings.... Trying to find and move the 30 days old logs #!/bin/bash DATE=`date +%d-%b-%Y` STATUSLOG="$HPATH$DATE-E3Backup.log" HPATH="/ABC/Websphere/" HT=`hostname` BKUPSTR="/ABC/Websphere/$HT/" echo "Moving of old logs Started on $HT " >> $STATUSLOG find... (2 Replies)
Discussion started by: manju98458
2 Replies

5. Shell Programming and Scripting

Find & move script

Hi all I wrote a little script that search for a file and moves it, its like this: #!/bin/ksh today=`date +"%d_%m_%y"` if ; then mkdir -p /tmp/bigfiles/$today mv $1 /tmp/bigfiles/$today/ echo "moving big file from /home/appcwec " | mailx -s "bigfile" ffff@yyy.com else ... (4 Replies)
Discussion started by: fretagi
4 Replies

6. Shell Programming and Scripting

Find and Move Files up One Level

Hi All, So I have another question. I'm trying to search for files with a certain extension and then move all of them up one level in the folder hierarchy. So something like this: original: /path/to/file/test.txt after: /path/to/test.txt I had some great help recently with another... (4 Replies)
Discussion started by: ideal2545
4 Replies

7. Shell Programming and Scripting

Find and move

Hello All, /storage3 /storage4 I have written a shell script to locate files older than 7 days in /storage4 folder and move to /storage3.At the same time it will take output as number of files moved and log in a .txt file. It will also find files in /storage3 older than 90 days and remove... (4 Replies)
Discussion started by: Siddheshk
4 Replies

8. Shell Programming and Scripting

find top 100 files and move them

i have some 1000 files in my dir and i want to find top 100 files and move them to some other location: below the 2 commands i used, but it is not working ls -ltr | grep ^- | head -100 | xargs mv destination - _________>not working ls -ltr | grep ^- | head -100 | xargs mv {}... (3 Replies)
Discussion started by: ali560045
3 Replies

9. Shell Programming and Scripting

need to move find results

I am looking for files of a certian type and logging them. After they are logged they need to be moved to a different directory. HOw can i incorporate that in my current script? CSV_OUTFILE="somefile.csv" find . -name W\* -exec printf "%s,%s,OK" {} `date '+%Y%m%d%H%M%S'` \; > ${CSV_OUTFILE} ... (9 Replies)
Discussion started by: pimentelgg
9 Replies

10. Shell Programming and Scripting

find move

Hello folks. I have read the forum here, almost came close to using some of the hints but too much info so I need a little nudge. OBJECTIVE: I want to write a script that looks at certain type of files, than move those selected files to another directory, however, keeping the structure (PATH)... (4 Replies)
Discussion started by: saswerks
4 Replies
Login or Register to Ask a Question