Linux如何使用命令行高效地復(fù)制文件到指定目錄

2021-02-06    分類: 網(wǎng)站建設(shè)

1. 前言

本文主要講解Linux系統(tǒng)如何使用命令行工具把文件復(fù)制到另一個文件夾或者目錄。

linux復(fù)制文件到另一個文件夾

2. cp命令的選項和功能

copy命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的copy命令一樣,功能十分強(qiáng)大。

語法: cp [選項] 源文件或目錄 目標(biāo)文件或目錄

說明:該命令把指定的源文件復(fù)制到目標(biāo)文件或把多個源文件復(fù)制到目標(biāo)目錄中。

該命令的各選項含義如下:

- a 該選項通常在拷貝目錄時使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用等于dpR選項的組合。

- d 拷貝時保留鏈接。

- f 刪除已經(jīng)存在的目標(biāo)文件而不提示。

- i 和f選項相反,在覆蓋目標(biāo)文件之前將給出提示要求用戶確認(rèn)?;卮饄時目標(biāo)文件將被覆蓋,是交互式拷貝。

- p 此時cp除復(fù)制源文件的內(nèi)容外,還將把其修改時間和訪問權(quán)限也復(fù)制到新文件中。

- r 若給出的源文件是一目錄文件,此時cp將遞歸復(fù)制該目錄下所有的子目錄和文件。此時目標(biāo)文件必須為一個目錄名。

- l 不作拷貝,只是鏈接文件。

案例1:

復(fù)制指定目錄下的全部文件到另一個目錄中

文件及目錄的復(fù)制是經(jīng)常要用到的。linux下進(jìn)行復(fù)制的命令為cp。

假設(shè)復(fù)制源目錄 為 dir1 ,目標(biāo)目錄為dir2。怎樣才能將dir1下所有文件復(fù)制到dir2下了

如果dir2目錄不存在,則可以直接使用

[root@zcwyou ~]# cp -r dir1 dir2

即可。

如果dir2目錄已存在,則需要使用

[root@zcwyou ~]# cp -r dir1/. dir2

如果這時使用cp -r dir1 dir2,則也會將dir1目錄復(fù)制到dir2中,明顯不符合要求。

ps:dir1、dir2改成對應(yīng)的目錄路徑即可。

案例2:

復(fù)制指定文件到指定文件夾

首先建立一個用于測試的目錄,用'tree'命令查看

可見,目錄中主要包含用于測試的.txt文件和用于充當(dāng)炮灰的。tes文件

目標(biāo)是保持當(dāng)前的目錄結(jié)構(gòu),只把txt文件復(fù)制出來

本文將會以兩種情況作案例說明。

比如要把A文件夾復(fù)制到B文件夾內(nèi)。比如A內(nèi)的文件是:

- A/
 .hi.txt
 a1.txt
 shadow.json
 - dir1/
 dir1.txt

即A目錄有 .hi.txt, a1.txt,shadow.json三個文件及一個子目錄dir1,dir1里含有一個文件dir1.txt。

3. 案例1:把`A`文件夾內(nèi)的所有文件復(fù)制到`B`文件夾內(nèi)

linux復(fù)制文件到另一個目錄

我們的目標(biāo):復(fù)制操作后B文件夾的內(nèi)容和原來A文件夾一樣:

- B/
 .hi.txt
 a1.txt
 shadow.json
 - dir1/
 dir1.txt

4. 案例2:把`A`文件夾本身復(fù)制到`B`文件夾內(nèi)

操作目標(biāo):復(fù)制完成后,B文件夾的要包含原來的A文件夾:

- B/
 - A/
 .hi.txt
 a1.txt
 shadow.json
 - dir1/
 dir1.txt

5. 復(fù)制文件操作過程演示

第一種案例的命令,也就是把文件夾A中的所有內(nèi)容復(fù)制到B文件夾中,即B與A的內(nèi)容一樣。

[root@zcwyou ~]# cp -a A/. B

第二種案例的命令,也就是把文件夾A中的所有內(nèi)容復(fù)制成B文件夾中,即B包含A的所有內(nèi)容。

[root@zcwyou ~]# cp -a A B

需要解釋的點:

  • -a是一個符合參數(shù),代表-pPR,可以簡單這樣理解:“支持所有子文件并且保留文件屬性”,推薦加上這個選項。
  • 上面兩者的卻別就是A后加了個/.,如果不加/.,A本身作為一個完整的文件夾被復(fù)制到了目標(biāo)文件夾內(nèi)。如果加了/.,則代表A文件夾內(nèi)的所有文件被復(fù)制到目標(biāo)文件夾內(nèi)。注意這種/.是cp命令本身專有的代表所有文件的方式,如果你使用A/*,cp不會復(fù)制隱藏文件(以.開頭的文件)。
  • 6. 只復(fù)制指定文件的方法

    繼續(xù)上面的例子,A文件夾:

    - A/
     .hi.txt
     a1.txt
     shadow.json
     - dir1/
     dir1.txt
    

    如果想要復(fù)制指定文件,可以在文件夾后面加入篩選字符,比如,篩選所有的.txt:

    [root@zcwyou ~]# cp -a A/*.txt B
    

    執(zhí)行完畢后,B目錄是:

    - B/
     a1.txt
    

    需要注意的問題:

    • 不會匹配子文件夾里的文件。
    • 不會匹配隱藏文件(以.開頭的文件)。
    • -a參數(shù)上面有說明。

    7. 一次復(fù)制指定指定的多個文件

    cp同時也支持手動指定多個文件,繼續(xù)上面的例子,A文件夾:

    - A/
     .hi.txt
     a1.txt
     shadow.json
     - dir1/
     dir1.txt
    

    執(zhí)行cp:

    [root@zcwyou ~]# cp -a A/.hi.txt A/dir1/dir1.txt B
    

    執(zhí)行完畢后,B目錄是:

    - B/
     .hi.txt
     dir1.txt
    

    需要注意的問題:

    • dir1.txt會被放在根目錄,也就是源文件夾內(nèi)的子目錄不會被保留。
    • -a參數(shù)上面有說明。

    8. 復(fù)制時強(qiáng)制覆蓋原文件

    linux復(fù)制文件時強(qiáng)制覆蓋原文件

    cp默認(rèn)會立即覆蓋目標(biāo)文件(如果存在的話),不做任何提示。

    如果想要cp在覆蓋文件前做提示,請使用-i命令,即cp -i,示例:覆蓋文件前做提示

    [root@zcwyou ~]# cp -i -a documents/. backup/
    

    如果出現(xiàn)沒有加-i參數(shù),但cp仍然會提示覆蓋的問題(比如會提示類似這種消息:cp: overwrite dir/a.txt?)??赡苁莄p命令被別名化,請使用\cp來運行命令。

    強(qiáng)制不允許覆蓋文件前提示

    [root@zcwyou ~]# \cp -a documents/. backup/
    

    9. 總結(jié)

    cp命令是Linux系統(tǒng)里最最為常用的命令,系統(tǒng)運維者必須掌握它的所有功能和語法。linux復(fù)制文件到另一個文件夾或目錄更是最常用的功能之一。

    當(dāng)前文章:Linux如何使用命令行高效地復(fù)制文件到指定目錄
    網(wǎng)頁路徑:http://www.bm7419.com/news22/99522.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、Google、云服務(wù)器、外貿(mào)建站、搜索引擎優(yōu)化、品牌網(wǎng)站設(shè)計

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

    成都定制網(wǎng)站建設(shè)