cp

將源文件或目錄複製到目標文件或目錄中

補充說明

cp命令 用來將一個或多個源文件或者目錄複製到指定的目的文件或目錄。它可以將單個源文件複製成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時複製多個文件,當一次複製多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。

語法

1cp(選項)(參數)

選項

 1-a:此參數的效果和同時指定"-dpR"參數相同;
 2-d:當複製符號連接時,把目標文件或目錄也建立爲符號連接,並指向與源文件或目錄連接的原始文件或目錄;
 3-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
 4-i:覆蓋既有文件之前先詢問用戶;
 5-l:對源文件建立硬連接,而非複製文件;
 6-p:保留源文件或目錄的屬性;
 7-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一併處理;
 8-s:對源文件建立符號連接,而非複製文件;
 9-u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才複製文件;
10-S:在備份文件時,用指定的後綴“SUFFIX”代替文件的默認後綴;
11-b:覆蓋已存在的文件目標前將目標文件備份;
12-v:詳細顯示命令執行的操作。

參數

  • 源文件:制定源文件列表。默認情況下,cp命令不能複製目錄,如果要複製目錄,則必須使用-R選項;
  • 目標文件:指定目標文件。當“源文件”爲多個文件時,要求“目標文件”爲指定的目錄。

實例

下面的第一行中是 cp 命令和具體的參數(-r 是“遞歸”, -u 是“更新”,-v 是“詳細”)。接下來的三行顯示被複制文件的信息,最後一行顯示命令行提示符。這樣,只拷貝新的文件到我的存儲設備上,我就使用 cp 的“更新”和“詳細”選項。

通常來說,參數 -r 也可用更詳細的風格 --recursive。但是以簡短的方式,也可以這麼連用 -ruv

1cp -r -u -v /usr/men/tmp ~/men/tmp

版本備份 --backup=numbered 參數意思爲“我要做個備份,而且是帶編號的連續備份”。所以一個備份就是 1 號,第二個就是 2 號,等等。

1$ cp --force --backup=numbered test1.py test1.py
2$ ls
3test1.py test1.py.~1~ test1.py.~2~

如果把一個文件複製到一個目標文件中,而目標文件已經存在,那麼,該目標文件的內容將被破壞。此命令中所有參數既可以是絕對路徑名,也可以是相對路徑名。通常會用到點.或點點..的形式。例如,下面的命令將指定文件複製到當前目錄下:

1cp ../mary/homework/assign .

所有目標文件指定的目錄必須是己經存在的,cp命令不能創建目錄。如果沒有文件複製的權限,則系統會顯示出錯信息。

將文件file複製到目錄/usr/men/tmp下,並改名爲file1

1cp file /usr/men/tmp/file1

將目錄/usr/men下的所有文件及其子目錄複製到目錄/usr/zh

1cp -r /usr/men /usr/zh

交互式地將目錄/usr/men中的以m打頭的所有.c文件複製到目錄/usr/zh

1cp -i /usr/men m*.c /usr/zh

我們在Linux下使用cp命令複製文件時候,有時候會需要覆蓋一些同名文件,覆蓋文件的時候都會有提示:需要不停的按Y來確定執行覆蓋。文件數量不多還好,但是要是幾百個估計按Y都要吐血了,於是折騰來半天總結了一個方法:

 1cp aaa/* /bbb
 2# 複製目錄aaa下所有到/bbb目錄下,這時如果/bbb目錄下有和aaa同名的文件,需要按Y來確認並且會略過aaa目錄下的子目錄。
 3
 4cp -r aaa/* /bbb
 5# 這次依然需要按Y來確認操作,但是沒有忽略子目錄。
 6
 7cp -r -a aaa/* /bbb
 8# 依然需要按Y來確認操作,並且把aaa目錄以及子目錄和文件屬性也傳遞到了/bbb。
 9
10\cp -r -a aaa/* /bbb
11# 成功,沒有提示按Y、傳遞了目錄屬性、沒有略過目錄。

遞歸強制複製目錄到指定目錄中覆蓋已存在文件

1cp -rfb ./* ../backup
2# 將當前目錄下所有文件,複製到當前目錄的兄弟目錄 backup 文件夾中

拷貝目錄下的隱藏文件如 .babelrc

1cp -r aaa/.* ./bbb
2# 將 aaa 目錄下的,所有`.`開頭的文件,複製到 bbb 目錄中。
3
4cp -a aaa ./bbb/ 
5# 記住後面目錄最好的'/' 帶上 `-a` 參數

複製到當前目錄

1cp aaa.conf ./
2# 將 aaa.conf 複製到當前目錄

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: