Moving and Copying Files and Directories

Written by Chris Gregg, with modifications by Nick Troccoli

Click here for a walkthrough video.

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


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.


$ 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!