Copy all files with a certain extension from all subdirectories
bash, cp, unix
Solution
`--parents` is copying the directory structure, so you should get rid of that.
The way you've written this, the `find` executes, and the output is put onto the command line such that `cp` can't distinguish between the spaces separating the filenames, and the spaces within the filename. It's better to do something like
$ find . -name \*.xls -exec cp {} newDir \;
in which `cp` is executed for each filename that `find` finds, and passed the filename correctly. Here's more info on this technique.
Instead of all the above, you could use zsh and simply type
$ cp **/*.xls target_directory
`zsh` can expand wildcards to include subdirectories and makes this sort of thing very easy.
Problem
Under unix, I want to copy all files with a certain extension (all excel files) from all subdirectories to another directory. I have the following command: ``` cp --parents `find -name \*.xls*` /target_directory/ ``` The problems with this command are: It copies the directory structure as well, and I only want the files (so all files should end up in /target_directory/) It does not copy files with spaces in the filenames (which are quite a few) Any solutions for these problems?