How can I make cp replace a directory of the same name without removing the existing directory first? cp's default behaviour is to copy the source directory into the destination rather than replace it:

mkdir -p test/a
mkdir a
cp -a test/a a

a is now within a, it didn't replace a. How can I make cp replace directories? I want it to work the same way it does with files.

I could of course delete the target first, but I don't want to have to run more than one command :)


Use a dot . after a:

cp -a test/a/. a

It actually does not replace a as you though. It just copy test/a content to directory a.

  • I just tested it, although it might not replace the directory itself it does indeed work in the same manner as replacing the directory. Thanks :)
    – John Hunt
    Sep 1 '14 at 13:11

Asterisk does the thing ;)

cp -a test/a/* a
  • This won't copy hidden files.
    – cuonglm
    Sep 1 '14 at 13:00
  • 1
    @Gnouc , cool...you're the man again ;) , hey but that wasnt the main point of the OPs question ;)
    – beginer
    Sep 1 '14 at 13:07

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.