Copy nested folders contents to one folder recursively (terminal)


I have a Wordpress upload folder that is structured using subfolders for months.

wolfr2:uploads wolfr$ tree .
|-- 2007
|   |-- 08
|   |   |-- beautifulkatamari.jpg
|   |   |-- beautifulkatamari.thumbnail.jpg
|   |   |-- beetle.jpg
|   |   |-- beetle.thumbnail.jpg

How do I use terminal to copy all the images recursively into another folder? I can't seem to wildcard folders like you can wildcard filenames. (e.g. *.jpg or *) (I'm on Mac OSX)

cp -R ./*.jpg .


12/20/2009 3:55:54 PM

Accepted Answer

This will copy all *.jpg files from the current folder to a new folder and preserve the directory structure.

tar cvfp `find . -name "*.jpg"` | (cd <newfolder>; tar xfp -)

To copy without preserving the directory structure:

cp `find . -name "*.jpg"` <newfolder>
12/20/2009 4:10:16 PM

Off the top of my head:

find . -type f -name \*.jpg -exec cp \{\} $TARGETFOLDER \;

If that doesn't work, comment and I'll try again, but find is definitely the way to go.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow