Say you would like to transfer set of files from location A to B. The source directory is really big but you are only interested in transferring some files (say *.png only). rsync is a good tool for the job. There are two methods I know that can be utilized.

find + rsync

Use find to select the files and then send them over with rsync:

find source -name "*.png" -print0 | rsync -av --files-from=- --from0 ./ ./destination/

This will create the minimum directories (and sub-directories) required for your files.

rsync only

Use rsync command only with –include and –exclude options.

rsync -av --include='*/' --include='*.png' --exclude='*' source/ destination/

The difference from the previous command is that rsync will create all the directories from source in destination, and then copy *.png files. It will potentially leave your destination filled with empty directories – which may or may not be what you want.