Bash Shell Scripting - How to iterate through directories, and copy and rename files?

4

2

I have a directory setup as follows:

/hosted/partner1/logo.png
/hosted/partner2/logo.png
/hosted/partner3/logo.png
/hosted/partner4/logo.png
/hosted/partner5/logo.png
..etc.

I want to write a script that can COPY those files to a different location, with a different file name, like this:

/partners/partner1.png
/partners/partner2.png
/partners/partner3.png
..etc.

Any ideas? I'm not so great with shell scripting and there are a lot of files that I need to migrate to a single directory...

Cypher

Posted 2010-05-17T19:47:37.940

Reputation: 333

Answers

7

find /hosted -maxdepth 1 -name "partner*" -type d | while read -r dir
do
    cp "${dir}/logo.png" "/partners/$(basename ${dir}).png"
done

Or

find /hosted -maxdepth 1 -name "partner*" -type d | while read -r dir
do
    cp "${dir}/logo.png" "/partners/${dir##*/}.png"
done

Paused until further notice.

Posted 2010-05-17T19:47:37.940

Reputation: 86 075