I need to go through subdirectories of a directory /home/userName/ and find the files whose names begin with SY101 and their extension is .csv and transfer those files to another server. My question is how do I loop through subdirectories and keep looking for the files?


You could do several things, this is probably the most efficient, but I dont know anything about the size of your files and your link between servers, but let me try:

find /home/userName/ -name 'SY101*.csv' | \
xargs tar cvfz - | ssh hostname 'tar xzf -'

This is going to copy the files to your home on the other server.

Please note the full path will be transfered.

  • What do you mean by full path will be transferred? – yogsma Sep 16 '10 at 21:34
  • 2
    I would recommend the -print0 option for find and the -0 option for xargs just in case any filenames have spaces in them. – Dennis Williamson Sep 16 '10 at 22:34

Something like this might work for you:

rsync --recursive --include='SY101*.csv' --include='*/' --exclude='*' /home/userName/ username@hostname:destdir

This will reproduce the directory hierarchy of the source on the destination.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.