I want to copy a file to all subfolders in a folder. How can I do this with the command line?


How to put a file in the current working directory in all subfolders (and maybe their subfolders, depending on what you want to do)

This will put the file in all of the subfolders, but not their subfolders:

for d in */; do cp water.txt "$d"; done

This will put the file water.txt (change all instances of water.txt to the filename you want to copy) in all the subfolders and their subfolders

for i in ./* # iterate over all files in current dir
    if [ -d "$i" ] # if it's a directory
        cp water.txt "$i" # copy water.txt into it

Info from this linuxquestions thread

  • Hey, what if I only want to put water.txt in the end subfolder of tar_dir? – June Wang Dec 19 '20 at 4:23

You could use that one-liner:

find <target-dir> -type d -exec cp <the file> {} \;

limit depth to 1 -> only the immediate directories

find <target-dir> -type d -maxdepth 1 -exec cp <the file> {} \;

  • 2
    This does all subdirectories recursively, not just the immediate subdirectories – Anake Feb 27 '17 at 11:13
  • 2
    @Anake updated my answer – ortang Feb 27 '17 at 15:37
  • This answer is excellent! – Jinhua Wang Oct 23 '19 at 9:48

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.