Linux cp
创建日期:2015-07-15 15:43:24

不带任何参数下,运行cp

这是cp命令最基础的使用。 拷贝名为myfile.txt从一个位置到另一个位置

cp myfile.txt /home/test/office

同时拷贝多个文件

要在同时拷贝多个文件,我们只需要将多个文件用空格隔开

cp file_1.txt file_2.txt file_3.txt /home/test/office

拷贝一个目录

要拷贝一个目录的话会有点棘手。你需要添加-r或者-R选项来实现。-r或-R选项表明递归操作。无论该目录是否为空目录,这个选项都是必要的

cp -r directory_1 /home/test/office

需要注意的一件事,你需要移除在目录名尾部的斜杠。否则你会收到类似的错误信息cp: omitting directory 'directory_1/',如果你收到错误信息,则目录不会被拷贝到目标文件夹。

创建文件的硬链接,而不是拷贝它们

拷贝文件意味着你必须使用一些存储空间来储存拷贝的文件。有时候出于某种原因,你可能想要创建“快捷方式”或者链接到文件,而不是拷贝它们。要做到这一点,我们可以使用-l选项。

cp -l file_4.txt /home/test/office

PS:硬链接不能用来创建目录。

创建文件的符号链接

也有一种链接叫做软链接符号链接。我们用-s选项来实现。

cp -s /home/test/Documents/file_6.txt file_6.txt

创建符号链接只能在当前目录下进行。

我们想要创建符号链接/home/test/office/file6.txt指向原文件/home/test/Documents/file6.txt。但是为了创建符号链接,我必须在将/home/test/office作为目标目录。一旦我设法进入目录,我就可以像上面一样运行cp -s命令。

不随符号链接拷贝原文件

只拷贝符号链接文件

-P选项来实现。当对符号链接使用cp命令,它会照原样拷贝它自身。

cp -P file_6.txt ./movie

随符号链接拷贝原文件

-L选项。基本上,这个刚好与上面的-P选项相反。

cp -L file_6.txt ./movie

文件归档

当我们去拷贝一个目录时,我们会用-r或者-R选项。但是我们也可以用-a选项来归档文件。这样会创建文件和目录的准确套录,如果有的话也可以包括符号链接。

PS:-a 会保留原文件或目录的属性

cp -a directory_1/ /home/test/office

上列的命令会拷贝一个名为directory1的目录到/home/test/office目录下。如你所见,file6.txt依然作为符号链接被复制。

显示正在做什么

默认情况下,当拷贝作业成功时,我们仅仅会再次看到命令提示符。如果你想了解在拷贝文件时都发生了什么,我们可以用-v选项。

cp -v *.txt /home/test/office

当原文件较目标文件新时拷贝

-u选项来实现

cp -vu *.txt /home/test/office

使用交互模式

交互模式下会询问是否覆盖目标目录下的文件。使用-i选项,启用交互模式。

cp -ir directory_1/ /home/test/office/

创建备份文件

当目标目录已经含有同名文件,默认情况下cp命令会覆盖目标目录下的同名文件。使用--backup选项,cp命令会为每一个现有的目标文件做一个备份。../office相对于/home/test/office

cp --backup=simple -v *.txt ../office

--backup=simple选项会创建一个在文件名末尾用波浪符标记(~)的备份文件。

--backup选项也有一些其他控制:

none, off:从不备份(即使给出 --backup)
numbered, t:用编号备份
existing, nil :如果编号备份存在则使用编号备份,否者用简易备份[译注:也就是用波浪号]
simple, never :总是使用简易备份

只拷贝文件属性

cp 命令也提供给我们--attributes-only选项。顾名思义,这个选项只会拷贝文件名及其属性,不会拷贝任何数据。

cp --attributes-only file_6.txt -v ../office

强制拷贝

用了-f选项会强制进行拷贝操作。如果目标文件不能打开,可以用-f尝试一下。

cp -f *.txt -v ../office

在拷贝之前先删除目标

--remove-destination选项实现。这个选项与上面的-f选项形成对照。如果cp命令在目标目录下发现同名文件,cp命令会先删除目标文件,然后再拷贝一份新的。

cp --remove-destination *.txt -v ../office

参考资料

https://linux.cn/article-2687-1.html