Unix Reference

cp and mv (copy and move files and directories)

Video

To copy a file in linux, you use the cp command:

$ cp SOURCE_FILE DESTINATION

The SOURCE_FILE is the file you want to copy, and the DESTINATION is where you want to copy it to. DESTINATION can be a path with or without a filename. If you leave the filename off, the file will have the same name as the original.

Example:

$ cp assign0/hello.c assign1/hello.c
$

The command above copies the hello.c file from the assign0 directory into the assign1 directory. If assign1 already exists as a directory, you could make the command shorter as follows:

$ cp assign0/hello.c assign1
$

If the assign1 folder did not already exist, a copy of the hello.c file would have been made in the current directory, and it would have been named assign1 -- probably not what you wanted to do. So, you have to be careful when copying.

On myth, your profile has been set up to warn you if a file already exists. This is not the case on many other Linux systems, so be careful! On other systems, copying a file with cp replaces a file with the same name in that location without asking you or telling you that it has removed the original file (permanently).

To copy an entire directory, use the -r (recursive) option for cp:

$ cp -r assign0 assign1
$

This will copy the entire assign0 directory into the directory called assign1. If assign1 does not exist, the cp command will create it.

The mv command moves files in a similar way to cp. It also doubles as a way to rename a file:

$ mv originalFile newFile
$

This renames originalFile to have the name newFile. You can move entire directories without a recursive flag:

$ mv directory1 directory2
$

Again, on myth, you will be asked before overwriting files with mv, but this is not normally the case on other systems, so be careful!

Back to contents