Copy nested folders contents to one folder recursively (terminal)

Viewed 32362

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 .

?

3 Answers

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>

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.

None of the above commands worked for me as such on macOS 10.15. Here's the one that worked:

find . -name "*.jpg" -exec cp /{/} [target folder path] \;
Related