Solved

cp files from mulitple directories into one directory LINUX (and rename files too)

Posted on 2010-08-26
4
468 Views
Last Modified: 2013-12-16
Hi--

I have a situation where i need to copy many files from many different subdirectories into another directory.
I am using the code below, BUT it overwrites files with the same name (obviously).

What would be a good work around so that I can rename the files something unique while copying them?

find <start directory>  -iname "*.html" -exec cp {} <target Directory> \;

Thanks!

0
Comment
Question by:b1xx1b
  • 2
4 Comments
 
LVL 40

Expert Comment

by:omarfarid
ID: 33533962
try something like this

n=0
find <start directory>  -iname "*.html" | while read file
do
    tfile=`basename $file`
    cp $file  dir/$tfile.$n
    n=`expr $n + 1`
done
0
 

Author Comment

by:b1xx1b
ID: 33534081
I am an noob on linux, how would i execute that script?

0
 
LVL 40

Accepted Solution

by:
omarfarid earned 500 total points
ID: 33534123
put in file using editor like vi or as below

echo 'n=0
find <start directory>  -iname "*.html" | while read file
do
    tfile=`basename $file`
    cp $file  dir/$tfile.$n
    n=`expr $n + 1`
done' > myscript

chmod +x myscipt

- run the script

./myscript
0
 
LVL 8

Expert Comment

by:point_pleasant
ID: 33534209
The following shell script should do the trick.  supposed the script is named 'my_move'  it would be invoked as follows "my_move <directory to look in> <directory to copy to>.   this particular script adds the date to the end of the file name so home.html would be renamed to home.html.082610 and then copied to the directory specified in $2, the second command line arguement.  Hope this helps.


Mike

m_date=`date +%m%d%y`
for i in `find $1 -print`
do
        rename .html .html.$m_date $i
        cp $i.$m_date $2
done
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Using 'screen' for session sharing, The Simple Edition Step 1: user starts session with command: screen Step 2: other user (logged in with same user account) connects with command: screen -x Done. Both users are connected to the same CLI sessio…
Linux users are sometimes dumbfounded by the severe lack of documentation on a topic. Sometimes, the documentation is copious, but other times, you end up with some obscure "it varies depending on your distribution" over and over when searching for …
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

791 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question