I have a folder that contains sub-directories A,B,C and D. I need to copy directories A and D to another directory called 'copy' while excluding B and C(i.e. B and C doesn’t get copied over). I was thinking about doing the following (in command-line pseudocode):
ls (selective ls on the source directory) |
scp -r {returned value from the ls} {target directory}
Is there a Linux command-line way to accomplish the above?
The simple answer is to only copy the directories you want:
This will do exactly what you’ve described in your example. A more general solution might look something like this:
This command will work as long as the number of files in your source directory is not large. As the number of files goes up, you’ll eventually run into a “command too long” error.
Instead of using
scp, you could usersync, which has a variety of mechanisms for including/excluding files. For example: