Copying, moving, and renaming files and directories are standard tasks for sysadmins and end users. Depending on your Linux distribution, you can accomplish these operations in various ways.
The Bash shell is usually the most efficient tool for file management. This article assumes you already have a basic understanding of how to open a Linux terminal and enter commands. (See How to access the Linux terminal if you want a refresher.) Connect to your Linux terminal with your regular user account, and get ready to reorganize.
Change to your home directory and create a new directory named mydir
for the exercises. The command to create a new directory is mkdir
:
$ mkdir mydir
$ cd mydir/
Move files and directories
The mv
command moves both directories and files. Check its options and parameters from the --help
results below:
$ mv --help
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-f, --force do not prompt before overwriting
-i, --interactive prompt before overwrite
-n, --no-clobber do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
--strip-trailing-slashes remove any trailing slashes from each SOURCE
argument
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
-T, --no-target-directory treat DEST as a normal file
-u, --update move only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-Z, --context set SELinux security context of destination
file to default type
--help display this help and exit
--version output version information and exit
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off never make backups (even if --backup is given)
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Rename files and directories
You also use the mv
command to rename directories and files if the destination doesn't already exist. If the destination exists, then they're moved using the syntax mv {source} {destination}
. Here is an example of moving existing files to existing directories:
$ ls -l
total 0
drwxrwxr-x. 2 localuser localuser 6 Jun 9 14:57 dir1
drwxrwxr-x. 2 localuser localuser 6 Jun 9 17:52 dir2
drwxrwxr-x. 2 localuser localuser 6 Jun 9 17:52 dir3
drwxrwxr-x. 3 localuser localuser 21 Jun 9 16:57 dir4
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:31 file1
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:33 file2
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:33 file3
$ mv file1 dir1/
$ mv file2 dir2/
$ mv file3 dir3/
$ ls -l
total 0
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:53 dir1
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:53 dir2
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:53 dir3
drwxrwxr-x. 3 localuser localuser 21 Jun 9 16:57 dir4
[mydir]$ ls -lR
.:
total 0
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:53 dir1
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:53 dir2
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:53 dir3
drwxrwxr-x. 3 localuser localuser 21 Jun 9 16:57 dir4
./dir1:
total 0
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:31 file1
./dir2:
total 0
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:33 file2
./dir3:
total 0
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:33 file3
./dir4:
total 0
drwxrwxr-x. 2 localuser localuser 19 Jun 9 17:35 subdir1
./dir4/subdir1:
total 0
-rw-rw-r--. 1 localuser localuser 0 Jun 9 17:35 file4
[ Boost your Bash skills. Download the Bash shell scripting cheat sheet. ]
And you can use the mv
command to move directories into other directories:
$ ls -1
dir1
dir2
dir3
dir4
$ mv dir1/ dir2/
$ mv dir2/ dir3/
$ ls -1
dir3
dir4
The dir1
and dir2
directories still exist; you've just moved them. See what it looks like for yourself:
$ ls -R
dir3
dir4
./dir3:
dir2
file3
./dir3/dir2:
dir1
file2
./dir3/dir2/dir1:
file1
./dir4:
subdir1
./dir4/subdir1:
file4
Copy files and directories
The cp
command copies both files and directories. This command has many options, but the basic syntax is simple. Run cp {source} {destination}
to copy from one place (source) to another (destination). Consider the following example:
$ ls -1
dir3
dir4
$ cp dir4/subdir1/file4 .
$ ls -1
dir3
dir4
file4
$ ls -R dir4/
dir4/:
subdir1
dir4/subdir1:
file4
[ Download the free Linux commands cheat sheet. ]
To copy an entire directory with its contents, use the -R
option, as seen below:
$ cp -R dir3/ dir4/
$ ls -R
dir3
dir4
file4
./dir3:
total 0
dir2
file3
./dir3/dir2:
dir1
file2
./dir3/dir2/dir1:
file1
./dir4:
dir3
subdir1
./dir4/dir3:
dir2
file3
./dir4/dir3/dir2:
file2
./dir4/dir3/dir2/dir1:
file1
./dir4/subdir1:
file4
When you copy empty directories into other directories, there's no need for the -R
parameter.
More to explore
For each command I've demonstrated, there are many more options I've left out for the sake of brevity.
As a sysadmin, you must know how to copy, move, and rename files and directories. These file-management commands are the basis of much of what you do on the system and are the building blocks for effective Linux administration. I hope this article aids you in understanding this topic, helps your Linux certification path, and adds to your general sysadmin knowledge.
Sull'autore
Alexon has been working as a Senior Technical Account Manager at Red Hat since 2018, working in the Customer Success organization focusing on Infrastructure and Management, Integration and Automation, Cloud Computing, and Storage Solutions. He is a part of the TAM Practices LATAM team based in São Paulo, Brazil, where his job is partnering with, advocating, trust-advising, and supporting customers in their success goals while making use of the complete portfolio. He also contributes to produce and enhance documentation, knowledge-base articles, blog posts, presentations, webinars, and workshops. He is a member of numerous communities in addition to the Sudoers, like Red Hat Academy and Red Hat Accelerators. When he’s not at work, he enjoys spending quality time with his family (wife, daughter, and cat) and participating in several volunteer jobs.
Altri risultati simili a questo
Ricerca per canale
Automazione
Novità sull'automazione IT di tecnologie, team e ambienti
Intelligenza artificiale
Aggiornamenti sulle piattaforme che consentono alle aziende di eseguire carichi di lavoro IA ovunque
Hybrid cloud open source
Scopri come affrontare il futuro in modo più agile grazie al cloud ibrido
Sicurezza
Le ultime novità sulle nostre soluzioni per ridurre i rischi nelle tecnologie e negli ambienti
Edge computing
Aggiornamenti sulle piattaforme che semplificano l'operatività edge
Infrastruttura
Le ultime novità sulla piattaforma Linux aziendale leader a livello mondiale
Applicazioni
Approfondimenti sulle nostre soluzioni alle sfide applicative più difficili
Serie originali
Raccontiamo le interessanti storie di leader e creatori di tecnologie pensate per le aziende