Resources Software Development

Linux how to copy files from one directory to another without copying the directory name

This is for later when I forget how to do this. Basically I wanted to know how to move files from one directory into another recursively without the cp command also copying the directory name.

Basically if you use cp -r /directory then the contents of the directory and all within are copied, but this also copies the name of the current directory.

expect the unexpected
With linux expect the unexpected

The cp command is not logical, it doesn’t do what a user would expect.  Instead of just copying the files from /var/www/example to say /var/www/new-directory like one would logically expect, this command copies the files into new-directory but also puts them inside example so you end up with /var/www/new-directory/example/fileshere which is probably not what anyone expects.

So what kind of sorcery is required to get the outcome we would expect?
You add a tiny little dot to the first directory like so
cp -r /var/www/example/. /var/www/new-directory

Yes it is very important you structure the command EXACTLY like the above or else you won’t get what you want. Including the final slash with a dot after example/. tells the cp command to not copy the directory name, but to put all the files from that directory into the other.
Know you know…

now you know