Linux系統之mv命令的基本使用
- 一、mv命令介紹
- 1. mv命令簡介
- 2. mv命令的使用結果
- 二、mv命令的使用幫助
- 1. 在命令行的幫助信息
- 2. mv常用選項
- 三、mv命令的基本使用
- 1. 創建源目錄和目標目錄
- 2. 新建測試文件
- 3. 將源目錄文件復制到目標目錄
- 4. 將文件進行改名
- 5. 將目錄的所有文件轉移到目標目錄
- 6. 移動多個文件到目標目標
- 7. 移動目錄
- 8. 覆蓋文件
- 四、mv的日常使用
- 1. 提示是否覆蓋文件
- 2. 覆蓋文件時對源文件備份
- 3. 強制覆蓋文件
- 4. 打印轉移信息
- 5. 源文件比目標文件新時才執行更新
- 五、注意事項
一、mv命令介紹
1. mv命令簡介
mv
命令主要是在Linux系統中用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。source表示源文件或目錄,target表示目標文件或目錄。如果將一個文件移到一個已經存在的目標文件中,則目標文件的內容將被覆蓋。
2. mv命令的使用結果
- mv命令可以用來將源文件移至一個目標文件中,或將一組文件移至一個目標目錄中。源文件被移至目標文件有不同的結果:
1.如果目標文件是到某一目錄文件的路徑,源文件會被移到此目錄下,且文件名不變。
2.如果目標文件不是目錄文件,則源文件名(只能有一個)會變為此目標文件名,并覆蓋己存在的同名文件。
3.如果源文件和目標文件在同一個目錄下,mv的作用就是改文件名。
4.當目標文件是目錄時,源文件或目錄參數可以有多個,則所有的源文件都會被移至目標目錄中。所有移到該目錄下的文件都將保留以前的文件名。
二、mv命令的使用幫助
1. 在命令行的幫助信息
在命令行的,
mv --help
顯示mv的幫助信息。
[root@jeven ~]# mv --help
Usage: mv [OPTION]... [-T] SOURCE DESTor: mv [OPTION]... SOURCE... DIRECTORYor: 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 SOURCEargument-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 newerthan the destination file or when thedestination file is missing-v, --verbose explain what is being done-Z, --context set SELinux security context of destinationfile to default type--help display this help and exit--version output version information and exitThe 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 backupsexisting, nil numbered if numbered backups exist, simple otherwisesimple, never always make simple backupsGNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'mv invocation'
2. mv常用選項
mv命令的常用選項
--backup=<備份模式>:若需覆蓋文件,則覆蓋前先行備份;
-b:當文件存在時,覆蓋前,為其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文件或目錄;
-i:交互式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入”y”,表示將覆蓋目標文件;輸入”n”,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。
--strip-trailing-slashes:刪除源文件中的斜杠“/”;
-S<后綴>:為備份文件指定后綴,而不使用默認的后綴;
--target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
三、mv命令的基本使用
1. 創建源目錄和目標目錄
創建一個源目錄和目標目錄
[root@jeven ~]# mkdir /source
[root@jeven ~]# mkdir /target
2. 新建測試文件
在源目錄和目標目錄分別新建測試文件。
[root@jeven ~]# touch /source/sou_file{01..03}.txt
[root@jeven ~]# ls /source/
sou_file01.txt sou_file02.txt sou_file03.txt
[root@jeven ~]# touch /target/tar_file{01..03}.txt
[root@jeven ~]# ls /target/
tar_file01.txt tar_file02.txt tar_file03.txt
3. 將源目錄文件復制到目標目錄
將/source/sou_file01.txt 復制到/target/目錄下
[root@jeven ~]# mv /source/sou_file01.txt /target/
[root@jeven ~]# ls /target/
sou_file01.txt tar_file01.txt tar_file02.txt tar_file03.txt
4. 將文件進行改名
在同一目錄下將文件進行改名,例如在target/目錄,將sou_file01.txt改名為aa_test.txt
[root@jeven ~]# cd /target/
[root@jeven target]# mv sou_file01.txt aa_test.txt
[root@jeven target]# ls /target/
aa_test.txt tar_file01.txt tar_file02.txt tar_file03.txt
5. 將目錄的所有文件轉移到目標目錄
將/source/目錄的所有文件,轉移到目標目錄 /target/
[root@jeven ~]# mv /source/* /target/
[root@jeven ~]# ls /target/
aa_test.txt sou_file02.txt sou_file03.txt tar_file01.txt tar_file02.txt tar_file03.txt
6. 移動多個文件到目標目標
將/test/目錄下的file01和file02文件轉移到目標目錄/target
[root@jeven ~]# mv /test/file01 /test/file02 /target/
[root@jeven ~]# ls /target/
aa_test.txt file01 file02 sou_file02.txt sou_file03.txt tar_file01.txt tar_file02.txt tar_file03.txt
7. 移動目錄
將/test目錄移動到/target目錄
[root@jeven ~]# mv /test/ /target/
[root@jeven ~]# ls /target/
aa_test.txt file01 file02 sou_file02.txt sou_file03.txt tar_file01.txt tar_file02.txt tar_file03.txt test
8. 覆蓋文件
在/source目錄下,創建兩個文件,并寫入內容。
root@jeven ~]# cd /source/
[root@jeven source]# ls
[root@jeven source]# echo 11 > aa.txt
[root@jeven source]# echo 22 > bb.txt
[root@jeven source]# cat aa.txt
11
[root@jeven source]# cat bb.txt
22
當源文件aa.txt和目標文件bb.txt都存在時,源文件會變成目標文件bb.txt,并覆蓋原來的bb.txt文件。
[root@jeven source]# mv aa.txt bb.txt
mv: overwrite ‘bb.txt’? yes
[root@jeven source]# ls
bb.txt
[root@jeven source]# cat bb.txt
11
四、mv的日常使用
1. 提示是否覆蓋文件
在當覆蓋文件時,提示是否覆蓋文件,默認mv命令加了-I
[root@jeven source]# mv -i aa.txt bb.txt
mv: overwrite ‘bb.txt’? yes
[root@jeven source]# ls
bb.txt
[root@jeven source]# cat bb.txt
11
[root@jeven source]# alias |grep mv
alias mv='mv -i'
2. 覆蓋文件時對源文件備份
使用
mv -b
,在覆蓋文件時,對源文件進行備份。
[root@jeven source]# echo 11 > aa.txt
[root@jeven source]# echo 22 > bb.txt
[root@jeven source]# mv -b aa.txt bb.txt
mv: overwrite ‘bb.txt’? yes
[root@jeven source]# ls
bb.txt bb.txt~
[root@jeven source]# cat bb.txt
11
[root@jeven source]# cat bb.txt~
22
3. 強制覆蓋文件
使用mv -f 強制覆蓋文件。
mv -f aa.txt bb.txt
4. 打印轉移信息
使用mv -v打印移動信息
[root@jeven source]# mv -v /source/bb.txt /target/
‘/source/bb.txt’ -> ‘/target/bb.txt’
5. 源文件比目標文件新時才執行更新
當源文件是最新更新時,才可以覆蓋目標文件。
- 目標文件比源文件更新時,不執行覆蓋操作。
[root@jeven source]# echo 11 > aa.txt
[root@jeven source]# echo 22 > bb.txt
[root@jeven source]# mv -uv aa.txt bb.txt
[root@jeven source]# ls
aa.txt bb.txt
- 源文件比目標文件更新時,執行覆蓋操作。
[root@jeven source]# echo ee > aa.txt
[root@jeven source]# mv -uv aa.txt bb.txt
mv: overwrite ‘bb.txt’? yes
‘aa.txt’ -> ‘bb.txt’
[root@jeven source]# ls
bb.txt
[root@jeven source]# cat bb.txt
ee
五、注意事項
在Linux中使用mv
命令時,有幾個注意事項可以幫助你更安全、有效地操作文件和目錄:
-
權限問題:確保你有足夠的權限去移動或重命名文件。如果沒有,
mv
命令會失敗,除非使用了sudo
(對于需要提升權限的操作)。 -
覆蓋風險:默認情況下,如果你嘗試移動一個文件到一個已存在的同名文件的位置,
mv
會直接覆蓋目標文件,不會詢問。為了避免意外覆蓋,可以使用-i
(interactive)選項,這樣在覆蓋前會提示確認。 -
備份原文件:使用
-b
選項可以在覆蓋文件前自動創建一個備份,這對于保護重要數據很有幫助。 -
移動與重命名的區別:當第二個參數是文件名時,視為重命名操作;當是目錄名時,則是移動操作。確保正確指定目標以達到預期效果。
-
跨文件系統移動:跨文件系統移動文件時,
mv
實際上是先復制再刪除原文件。這意味著如果操作過程中出現錯誤(如空間不足),可能會丟失原文件。 -
目錄操作:移動目錄時,記得在目標路徑后加斜杠(/),這可以避免在目標目錄不存在時意外地將源目錄作為目標目錄的一個子目錄移動進去。
-
批量操作:可以同時移動多個文件或目錄,只需在源文件列表中列出它們,但目標必須是一個已存在的目錄。
-
符號鏈接:移動符號鏈接會移動鏈接本身而不是鏈接指向的文件。若要移動實際文件,需要使用
-L
選項來跟蹤并移動鏈接指向的目標。