This tutorial explains Linux “mv” command, options and its usage with examples.
Usage:
mv [OPTION]… SOURCE… DIRECTORY
mv (short for move) is a Unix command that moves one or more files or directories from one place to another. Since it can “move” files from one filename to another, it is also used to rename files.
Using mv requires the user to have write permission for the directories the file will move between. This is because mv changes the file’s location by editing the file list of each directory.
Here’s the listing of example usage of “mv” command:
1. To rename a file(mv original_name new_name):
sanfoundry-> ls mv_command sample.txt sam.txt sanfoundry-> ls -i sam.txt 591562 sam.txt sanfoundry-> mv sam.txt sam1.txt sanfoundry-> ls -i sam1.txt 591562 sam1.txt
Here you can see that even after moving the files, it’s inode number remains the same which indicates no change in the content.
2. To rename a Directory(mv original_name new_name):
Just like renaming a file, you can rename a directory using mv command as shown below. This also keeps the inode number of the directory same after renaming.
sanfoundry-> mkdir sam sanfoundry-> ls -ldi sam 612573 drwxrwxr-x 2 himanshu himanshu 4096 Jul 16 18:59 sam sanfoundry-> mv sam sam1 sanfoundry-> ls -ldi sam1 612573 drwxrwxr-x 2 himanshu himanshu 4096 Jul 16 18:59 sam1
Here as we can see tha the innode number, 612573 is remained the same. We here used “-d” option alongwith ls since we want info about
the directories.
3. To prompt for a confirmation before overwriting(mv -i original new):
To avoid ovewritting the existing file before mv command, you might want to get a confirmation from move command before overwriting the destination file using -i option as shown below. You may type either ‘y’ or ‘n’ to accept or reject the move operation.
sanfoundry-> mv -i sam1.txt sample.txt mv: overwrite `sample.txt'? y
4. To take a backup of destination before overwriting(mv –suffix=extension oldname newname):
If you want to avoid the overwriting of the file, you mat rename the file before using mv command.
sanfoundry-> ls sample1.txt sample2.txt sanfoundry-> mv --suffix=.backup sample1.txt sample2.txt sanfoundry-> ls sample2.txt sample2.txt.backup
Here as you can see that sample2.txt files was alreadt there. But using –suffix=.backup had added the extension and renamed it as sample2.txt
5. Move all the files from a folder:
sanfoundry-> ls 1.txt 2.txt sanfoundry-> mv * ../folder/ sanfoundry-> ls sanfoundry-> cd .. sanfoundry-> cd folder/ sanfoundry-> ls 1.txt 2.txt
6. To move only the files that don’t exist in the destination directory(mv -u source destination):
sanfoundry-> cd ../sam/ sanfoundry-> ls 1.txt sanfoundry-> ls 1.txt 2.txt 3.txt sanfoundry-> mv * ../sam/ sanfoundry-> cd ../sam/ sanfoundry-> ls 1.txt 2.txt 3.txt
7. To show the errors:
mv will move the file(s) without prompting even if it is writing over an existing target. Note that this is the default if the standard input is not a terminal.
sanfoundry-> mv -f 1.txt ../sam/ mv: `1.txt' and `../sam/1.txt' are the same file sanfoundry-> mv -f 11.txt ../sam/ mv: cannot stat `11.txt': No such file or directory