溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux中mv命令的高級用法示例

發(fā)布時間:2020-08-23 22:42:14 來源:腳本之家 閱讀:272 作者:良許Linu 欄目:服務(wù)器

前言

mv命令是move的縮寫,可以用來移動文件或者將文件改名(move (rename) files),是Linux系統(tǒng)下常用的命令,經(jīng)常用來備份文件或者目錄。

命令格式:

mv [選項] 源文件或目錄 目標文件或目錄

mv 也是 Linux 下一個使用頻率非常高的命令,但除了一些基本用法,你還知道它的哪些高級用法呢?

1. 基本用法

  • 移動一個/多個文件;
  • 移動一個/多個目錄;
  • 重命名文件/目錄。

這些都是很基本的用法,無需贅述。下面介紹一些更高級的用法。

2. 打印操作信息

我們?nèi)绻灰苿右粌蓚€或少數(shù)幾個文件/目錄時,暫且還可以去目標位置去查看文件是否移動成功。但如果有千百個文件呢?如何在不去目標位置查看的情況下知道我們的操作是否已經(jīng)成功了呢?我們可以加上 -v 選項。

[alvin@VM_0_16_centos mv_test]$ mv -v *.txt /home/alvin/test/mv_test/des/
‘file1.txt' -> ‘/home/alvin/test/mv_test/des/file1.txt'
‘file2.txt' -> ‘/home/alvin/test/mv_test/des/file2.txt'
‘file3.txt' -> ‘/home/alvin/test/mv_test/des/file3.txt'
‘file4.txt' -> ‘/home/alvin/test/mv_test/des/file4.txt'
‘file5.txt' -> ‘/home/alvin/test/mv_test/des/file5.txt'

當(dāng)然,此方法同樣適用于移動目錄。

3. 使用交互模式

在默認情況下,我們移動文件/目錄時,不會有任何提示。如果在目標位置我們有個相同名字的文件/目錄,mv 命令也不會提示而直接替換原來的文件。而這樣的操作,有時可能會造成災(zāi)難性的后果。

在這種情況下,我們可以加一個 -i 選項,當(dāng)目標位置有相同名字的文件時,它將會進行提示。如果你確認要覆蓋目標文件,鍵入 y 即可。

[alvin@VM_0_16_centos mv_test]$ mv -i file1.txt /home/alvin/test/mv_test/des/
mv: overwrite ‘/home/alvin/test/mv_test/des/file1.txt'? y

4. 不覆蓋同名文件

如果目標位置有同名文件,我們不希望它被覆蓋,可以加上 -n 選項。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:35 file3.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 des/file1.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 des/file2.txt
[alvin@VM_0_16_centos mv_test]$ mv -nv *.txt /home/alvin/test/mv_test/des/
‘file3.txt' -> ‘/home/alvin/test/mv_test/des/file3.txt' #目標位置沒有file3.txt文件,所以成功移動
[alvin@VM_0_16_centos mv_test]$ ls
des file2.txt

5. 使用更新選項

當(dāng)目標位置有同名文件/目錄時,我們只希望源文件比目標文件時間戳更新時,才進行覆蓋,否則不執(zhí)行。這種情況下,我們可以使用 -u 選項。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file1.txt #源文件比目標文件時間戳更新
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt #源文件比目標文件時間戳更舊
-rw-rw-r-- 1 alvin alvin 0 Feb 8 16:53 des/file1.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 des/file2.txt
[alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/
‘file1.txt' -> ‘/home/alvin/test/mv_test/des/file1.txt' #只有時間戳更新的文件被替換
[alvin@VM_0_16_centos mv_test]$ ls
des file2.txt

6. 覆蓋前創(chuàng)建備份

目標位置已經(jīng)有了同名文件,如果直接覆蓋總覺得有點不踏實,萬一現(xiàn)在的決定是錯的呢?有沒可能在覆蓋之前,先將目標文件進行備份?答案是肯定的,加一個 -b 選項即可。

[alvin@VM_0_16_centos mv_test]$ mv -bv *.txt /home/alvin/test/mv_test/des/
‘file1.txt' -> ‘/home/alvin/test/mv_test/des/file1.txt' (backup: ‘/home/alvin/test/mv_test/des/file1.txt~')
‘file2.txt' -> ‘/home/alvin/test/mv_test/des/file2.txt' (backup: ‘/home/alvin/test/mv_test/des/file2.txt~')
[alvin@VM_0_16_centos mv_test]$ ll des/
total 0
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:41 file1.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file1.txt~
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:27 file2.txt~
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:35 file3.txt

可以看到,在覆蓋之前,會將目標文件備份為一個帶波浪號 ~ 的文件,同時細心的讀者也會注意到,覆蓋后文件與備份文件的時間戳不一樣。

以上就是 mv 命令的一些更高級用法,靈活使用的話會為自己的工作效率提高一個檔次,在同事面前也更能裝逼。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI