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

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

1. 前言

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

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

2. cp命令的選項(xiàng)和功能

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

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

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

該命令的各選項(xiàng)含義如下:

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

- d 拷貝時(shí)保留鏈接。

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

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

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

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

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

案例1:

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

文件及目錄的復(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

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

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

案例2:

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

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

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

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

本文將會(huì)以兩種情況作案例說(shuō)明。

比如要把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三個(gè)文件及一個(gè)子目錄dir1,dir1里含有一個(gè)文件dir1.txt。

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

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

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

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

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

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

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

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

第一種案例的命令,也就是把文件夾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

需要解釋的點(diǎn):

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

    需要注意的問(wèn)題:

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

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

    cp同時(shí)也支持手動(dòng)指定多個(gè)文件,繼續(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
    

    需要注意的問(wèn)題:

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

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

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

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

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

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

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

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

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

    9. 總結(jié)

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

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

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

    廣告

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

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