描述
cp命令可以理解爲英文單詞copy的縮寫,其功能爲複製文件或目錄。
cp命令可以將多個文件複製到一個具體的文件名或一個已經存在的目錄下,也可以同時複製多個文件到一個指定的目錄中。
語法格式
cp [參數] [文件]
- 源文件:制定源文件列表。默認情況下,cp命令不能複製目錄,如果要複製目錄,則必須使用
-R
選項; - 目標文件 :指定目標文件。當“源文件”爲多個文件時,要求“目標文件”爲指定的目錄。
常用參數
參數 | 全稱 | 描述 |
---|---|---|
-a | –archive | 此參數的效果和同時指定"-dpR"參數相同; |
-b | 覆蓋已存在的文件目標前將目標文件備份; | |
-d | 當複製符號連接時,把目標文件或目錄也建立爲符號連接,並指向與源文件或目錄連接的原始文件或目錄;與--no-dereference --preserve=links 相同 |
|
-f | –force | 強行復制文件或目錄,不論目標文件或目錄是否已存在; |
-i | –interactive(交互) | 覆蓋既有文件之前先詢問用戶; |
-l | –link | 對源文件建立硬連接,而非複製文件; |
-p | –preserve[=ATTR_LIST] | 保留源文件或目錄的屬性; |
-R/r | –recursive | 遞歸處理,將指定目錄下的所有文件與子目錄一併處理; |
-s | –symbolic-link | 對源文件建立符號連接,而非複製文件; |
-S | –suffix=SUFFIX | 在備份文件時,用指定的後綴“SUFFIX”代替文件的默認後綴; |
-u | 使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才複製文件; | |
-v | –verbose | 詳細顯示命令執行的操作。 |
參考示例
- 複製目錄
> cp -R dir1 dir2/
- 複製文件test1並改名爲test2
> cp -f test1 test2
- 複製多個文件 (源文件是多個文件,目標文件,必須是目錄)
> cp test1.sh test2.sh aaa # 不是一個目錄
cp: target 'aaa' is not a directory
# dir2是一個目錄
> cp test1.sh test2.sh dir2
> ls dir2/
test1.sh test2.sh
- 複製一個文件夾(默認情況不能複製目錄,如需複製,需要添加
-r
參數)
>cp dir1/ dir3/ # 錯誤案例
cp: omitting directory 'dir1/'
> cp -r dir1/ dir3/
> ls -l dir3/
drwxr-xr-x 2 root root 4096 Dec 7 15:12 dir1
- 交互式地將目錄
/usr/men
中的以m打頭的所有.c文件複製到目錄/usr/zh
中
> cp -i /usr/men m*.c /usr/zh
- 我們在Linux下使用
cp
命令複製文件時候,有時候會需要覆蓋一些同名文件,覆蓋文件的時候都會有提示:需要不停的按Y
來確定執行覆蓋。文件數量不多還好,但是要是幾百個估計按Y都要吐血了,於是折騰來半天總結了一個方法:
# 複製目錄aaa下所有到/bbb目錄下,這時如果/bbb目錄下有和aaa同名的文件,
# 需要按Y來確認並且會略過aaa目錄下的子目錄。
> cp aaa/* /bbb
# 這次依然需要按Y來確認操作,但是沒有忽略子目錄。
> cp -r aaa/* /bbb
# 依然需要按Y來確認操作,並且把aaa目錄以及子目錄和文件屬性也傳遞到了/bbb。
> cp -r -a aaa/* /bbb
# 成功,沒有提示按Y、傳遞了目錄屬性、沒有略過目錄。
> \cp -r -a aaa/* /bbb