linux的cp命令詳解
- IT科技
- 關注:1.55W次
1、語法:
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
這兩個語法的效果是一樣的,都是把 SOURCE 代表的檔案複製到 DIRECTORY 目錄中。
2、使用cp命令將檔案複製到目錄:
首先來看下如何把檔案複製到目錄中,使用上面的兩種語法
cp file1 file2 file3 dir1
cp -t dir1 file1 file2 file3
注意,目錄 dir1 必須存在,否則會發生檔案複製重新命名。
3、使用cp命令將目錄複製到目錄:
有時候,我們想把整個目錄複製到另外一個目錄下,這個時候,我們需要加上 -r 或 -R 或 --recursive 選項
cp -r dir1/ dir2/
注意,目錄 dir2 必須存在,否則會發生目錄複製重命令。
4、使用cp命令將目錄項複製到目錄:
cp -r dir1 dir2 是把整個 dir1 目錄複製到目錄 dir2 下,但是有時候我們只想把 dir1 目錄下的內容複製到 dir2 目錄下,使用萬用字元來完成這個任務
cp dir1/* dir2
如果 dir1 目錄有 hello.txt 以及 world.txt 兩個檔案,那麼 dir1/* 會被 shell 展開為 dir1/hello.txt 以及 dir1/world.txt,那麼上面的命令的展開形式如下
cp dir1/hello.txt dir2/world.txt dir2
這個形式就是檔案複製到目錄的操作。
注意,目錄 dir2 必須存在,否則會報錯。
5、使用cp命令將檔案複製重新命名:
有時候,我們想複製一個檔案,但是同時又想把副本(複製後的檔案)進行重新命名,cp 命令可以做到,只要重新命名的名子不存在即可
cp file1 dir1/renamed_file1
這個命名會把當前目錄下的 file1 複製到 dir1 目錄下,並且重新命名為 renamed_file1。
注意,只有在 renamed_file1 不存在的情況下,才會發生檔案複製重新命名的操作。如果 renamed_file1 存在,那麼將會用 file1 的內容覆蓋 renamed_file1 的內容。
6、使用cp命令將目錄複製重新命名:
目錄複製重新命名與檔案複製重新命名類似,只是複製目錄需要加上選項 -r。
cp -r dir1/ dir2/renamed_dir1
注意,如果想目錄複製重新命名,那麼 renamed_dir1 目錄必須不存在。如果存在,那麼將會發生把一個目錄複製到另外一個目錄下的操作。
7、使用cp命令將檔案覆蓋:
在前面的部分中提到一個問題,檔案複製可以導致覆蓋操作,例如
cp file1 file2 dir1
如果 dir1 目錄下存在 file1 檔案,那麼預設將會發生覆蓋,但是不會給我們提示。如果這不是你想要的,那麼可以使用下面幾個選項
使用 -n 選項,不會發生覆蓋操作。
使用 -i 選項,可以提示操作者是否執行覆蓋操作。
使用 -b 選項,在覆蓋前進行備份,備份檔名是原始檔名加上一個波浪線。
使用 -u 選項,表示只有檔案比較新的時候,才發生覆蓋。
8、使用cp命令將備份檔案:
通過--suffix 重新定義備份檔名字尾。
cp --suffix=.bak file1 dir1
注意,如果指定了 --suffix 選項,那麼已經包含了 -b 的意思,因此不需要再指定 -b 選項。
如果 dir1 目錄已經存在 file1 檔案,那麼會生成一個備份檔案 file1.bak,然後再發生檔案複製。
其實 cp 命令有幾種內建的生成備份檔案的方式,通過 --backup 選項指定,有如下幾個值
simple/never: 備份字尾名為波浪符(~),這是預設方式。
numbered/t : 備份字尾為數字,例如 ~1~。
existing/nil : 如果已經存在數字備份的檔案,那麼就使用數字字尾,否則使用波浪符字尾。
9、使用cp命令將檔案的自我備份:
$ cp -b file1 file1
cp: 'file1' and 'file1' are the same file
這個命令表示在當前目錄下,把 file1 複製為 file1,並且 -b 選項表示生成備份檔案。但是這個命令無法執行,可以通過 -f 選項強制執行
$ cp -vfb hello.c hello.c
'hello.c' -> 'hello.c~'
- 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/n2rrnz.html