files from directory to another.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting files from directory to another.
# 1  
Old 07-15-2008
Bug files from directory to another.

I have 10000 files in a directory. The name is something like:

1.dat
2.dat
3.dat
4.dat
.....
.....
.....
1000.dat.
----
-----

Files are not sorted. I want to move first 500 largerst files from this directory to another directory. Next 500 largest files to another directory.

what would be the simple korn shell script for this problem?

thanks

Last edited by Bhanu72; 07-15-2008 at 08:31 PM..
# 2  
Old 07-15-2008
Here's one way. Take out the prints when you have finished testing. The tail +2 is to skip the total blocks displayed by ls -l. This will not work if any of the filenames contain spaces.

Code:
i=0
split=1000
ls -l | tail +2 | sort -rn -k 5,5 | awk '{print $NF}' | while read f
do
        (( i%${split}==0 )) && print mkdir subdir$(( i/${split} ))
        print mv $f subdir$(( i/${split} ))
        (( i=i+1 ))
done

# 3  
Old 07-15-2008
Bug

First you would need your file list sorted by file size
#!/bin/ksh
SearchPath=/whereever0
LowerSizeFilePath=/whereever1
UpperSizeFilePath=/whereever2
#
cd $SearchPath
ls -e | egrep -v "/$|->" | cut -c31-41,63- | sort -n -k 1n,10 | cut -c12- > /tmp/filelist~
#^ ^ ^ ^ ^
#| | | | + get file
#| | | +-- Sort file list by file size
#| | +-- Get only file size and file name
#| +-- Get off the list soft links and directories entries
#+-- list extended $CWD
#
#You can send the list to a temp file with "> /tmp/filelist~"
#
#You need to know the number of file with
FileCount=`cat /tmp/filelist~ | wc -l`
HeadSize=`expr $FileCount / 2`
TailSize=`expr $FileCount - $HeadSize`
#
mv `head -$HeadSize /tmp/filelist~` $LowerSizeFilePath
mv `tail -$TailSize /tmp/filelist~` $UpperSizeFilePath
rm /tmp/filelist~
# 4  
Old 07-15-2008
Hi

thanks for the solution. But for some reason it is not working or may be I am not understanding.

Can you please give more detail :

Why are you using egrep? What is it really doing?
ls it a typo that you are using ls -e instead of ls -l?

thanks for your help.
# 5  
Old 07-16-2008
Bhanu72:
I when to my server and tryed the script and it did worked. But when ran into a diffrent server "ls -e" is not supported. I look into diffrence on SunOS and notice that the server not supporting "-e" option for "ls" is has lower patche level for SunOS 5.10. So I can only assure that this script may work on Sun Solaris 5.10 Generic_125100-10.

I changed the script to use "ls -l", but need to change the "cut" setting.

Code:
ls -l | egrep -v "/$|->" | cut -c31-41,55- | sort -n -k 1n,10 | cut 
-c13- > /tmp/filelist~

When I don't understand a part of a code I run each part of the pipe command adding one part at a time so see that it is doing. With this suggested change to the script it must run. I ran it on a solaris 5.10 with lower patch level.

My best regards.
Luis Ramirez
# 6  
Old 07-16-2008
Did you try my solution? Change split=1000 to split=500 by the way, I forgot that you originally wanted to move 500 files, not 1000.
# 7  
Old 07-17-2008
Hi,

I did try it with small file number. split=5. It worked fine. In your code, you have created the directory within the script. But in my case the directory already exist. So I have to make simple modification.

Thanks for your help. I appreciate it.

Bhanu72
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Directory containing files,Print names of the files in the directory that are exactly same content.

Given a directory containing say a few thousand files, please output a list of all the names of the files in the directory that are exactly the same, i.e. have the same contents. func(a_directory_name) output -> {“matches”: , ... ]} e.g. func(“/home/my/files”) where the directory... (7 Replies)
Discussion started by: anuragpgtgerman
7 Replies

2. UNIX for Dummies Questions & Answers

How to move gz files from one source directory to destination directory?

Hi All, Daily i am doing the house keeping in one of my server and manually moving the files which were older than 90 days and moving to destination folder. using the find command . Could you please assist me how to put the automation using the shell script . ... (11 Replies)
Discussion started by: venkat918
11 Replies

3. Shell Programming and Scripting

List files with date, create directory, move to the created directory

Hi all, i have a folder, with tons of files containing as following, on /my/folder/jobs/ some_name_2016-01-17-22-38-58_some name_0_0.zip.done some_name_2016-01-17-22-40-30_some name_0_0.zip.done some_name_2016-01-17-22-48-50_some name_0_0.zip.done and these can be lots of similar files,... (6 Replies)
Discussion started by: charli1
6 Replies

4. AIX

How to set owner and permission for files/directory in directory in this case?

Hi. My example: I have a filesystem /log. Everyday, log files are copied to /log. I'd like to set owner and permission for files and directories in /log like that chown -R log_adm /log/* chmod -R 544 /log/*It's OK, but just at that time. When a new log file or new directory is created in /log,... (8 Replies)
Discussion started by: bobochacha29
8 Replies

5. Shell Programming and Scripting

Grepping file names, comparing them to a directory of files, and moving them into a new directory

got it figured out :) (1 Reply)
Discussion started by: sHockz
1 Replies

6. Shell Programming and Scripting

FTP files from different directory from remote server to one directory in local

Hi All, I want to search for .log files from folders and sub folders in remote server and FTP them to one particular folder in the local machine. I dont want to copy the entire directory tree structure, just have to take all the .log files from all the folders by doing a recursive search from the... (3 Replies)
Discussion started by: dassv
3 Replies

7. UNIX for Advanced & Expert Users

How to rsync or tar directory trees, with hidden directory, but without files?

I want to backup all the directory tress, including hidden directories, without copying any files. find . -type d gives the perfect list. When I tried tar, it won't work for me because it tars all the files. find . -type d | xargs tar -cvf a.tar So i tried rsync. On my own test box, the... (4 Replies)
Discussion started by: fld2007
4 Replies

8. Shell Programming and Scripting

Finding files in current directory when 100,000's files in current directory

Hi All I was wondering what is the most efficient way to find files in the current directory(that may contain 100,000's files), that meets a certain specified file type and of a certain age. I have experimented with the find command in unix but it also searches all sub directories. I have... (2 Replies)
Discussion started by: kewong007
2 Replies

9. Shell Programming and Scripting

Creating date directory and moving files into that directory

I have list of files named file_username_051208_025233.log. Here 051208 is the date and 025233 is the time.I have to run thousands of files daily.I want to put all the files depending on the date of running into a date directory.Suppose if we run files today they should put into 05:Dec:08... (3 Replies)
Discussion started by: ravi030
3 Replies

10. UNIX for Dummies Questions & Answers

moving files from a unix directory to a windows directory

Any body any ideas i'm failry new to this so any help would be appreciated. Cheers Steve (2 Replies)
Discussion started by: gleads
2 Replies
Login or Register to Ask a Question