Linux 文件管理:Linux cp 命令(复制文件)
cp
命令是拷贝(copy)的意思,用于将文件或目录复制一份。
在当前目录下拷贝一个文件的语法,
cp <existing file name> <new file name>
# cp <欲拷贝现存文件的文件名> <新文件名>
如上截图所示,想要创建一个名为 docu 文件的副本并且命名为 newdocu,使用 $ cp docu newdocu
命令。若指定文件(例子中是 newdocu)已存在,存在的文件将被覆盖。
拷贝文件到不同的目录
一定要在命令中指定拷贝到的目标目录。
如下截图图示中,之前在 /home/sssit/Desktop 目录下并没有 text 文件。图示命令执行后,text 文件就被拷贝到指定目录下了。
cp 命令选项
选项 | 功能说明 |
---|---|
cp -r | 拷贝目录及其子目录。 r 是递归的意思。 |
cp file1 file2 directoryname | 拷贝多个文件或目录到指定目标目录。 |
cp -backup | 拷贝现存文件为同名备份文件。 |
cp -i | 交互式确认拷贝文件。 |
cp -l | 创建文件硬链接代替实际拷贝文件。 |
cp -p | 保留文件属性。p 这里是 Preserves 的意思。 |
cp -u -v | 保证拷贝源文件比被覆盖同名文件要新。 |
cp 命令 -r 选项
-r 命令选项,用于拷贝包含(多层)子目录的目录被递归地完全拷贝到目标目录下。
语法:
cp -r <sourceDirectory> <destinationDirectory>
# cp -r <源目录> <目标目录>
举例:
$ cp -r library /home/sssit/Documents
如上截图例示,拷贝 library 整个目录内容到 /home/sssit/Documents 目录下。 library 的所有内容及其目录树都被递归地拷贝到 Documents 目录下。
拷贝多个文件或目录
多个文件或目录可一次性拷贝到指定目标目录。这种情况下,目标目录一定是一个目录。拷贝多文件或目录可利用 通配符 ,例如 cp *.txt
等命令。(注:与 windows 下的概念相同,* 和 ? 是通配符,读者自查其含义)
语法:
cp *.<extension> <destinationDirectory>
举例:
$ cp *.txt /home/sssit/Documents
上图例子中,拷贝具有相同后缀名的文件 (file1,file2,file3)到指定目录下。
cp 命令 --backup 选项
若拷贝的文件在目标目录下已存在同名文件,可使用此命令生成同名备份文件。
语法:
cp --backup <filename> <destinationDirectory>
举例:
$ cp --backup file2.txt /home/sssit/Downloads
上图中可看出,file2.txt 在目标目录中已存在,因此,通过此命令创建欲拷贝文件的备份文件放到目标目录,与已存在文件名相同。
现在,目标目录 Downloads 下有两个同名文件 (file2.txt)。
cp 命令 -i 选项
cp -i
命令选项,当覆盖已存在文件时,向用户询问。(注:命令行中 cp 命令默认是覆盖文件)
语法:
cp -i <filename> <destinationDirectory>
举例:
$ cp -i file3.txt /home/sssit/Desktop
如上可见,由于 file3.txt 文件已存在目标目录,系统会询问用户是否覆盖?这时,若回答 y 就覆盖文件,回答 n 就不覆盖已有文件。
cp 命令 -l 选项
如果只是创建文件硬链接,而不拷贝。可以使用此选项 -l 。
注: 硬链接意味着2个文件的 inode 值相同。若是拷贝文件, inode 值不同。
语法:
cp -l <filename> <destinationDirectory>
举例:
$ cp -l file1.txt usr/
注意这里我们在 usr 目录下创建 file1.txt 的硬链接,2个文件的 inode 值相同。(图中的 659160)。
cp 命令 -p 选项
cp -p
命令用于拷贝文件时保留文件的属性和特性,也可指定哪些属性或特性需要保留。
语法:
cp -p <filename> <destinationDirectory>
举例:
$ cp -p file2.txt usr/
在上图中可看到2个文件具有相同的属性和特性(访问权限、修改时间等)。
cp 命令 -u 和 -v 选项
cp -u -v
命令用于拷贝时,用户能看出哪些文件缺失或不存在。
语法:
cp -u -v <filenames> <destinationDirectory>
举例:
$ cp -u -v docc file1.txt /home/sssit/Downloads/
如上例截图所示,在 imp 目录下有2个文件 docc ,file1.txt 。把它们拷贝到 Download 目录中。但在 Download 目录下已存在 file1.txt 文件。
使用 cp -u -v
命令可看见只拷贝了 docc 文件,而 file1.txt 未拷贝,目标目录中原有同名文件未被覆盖。(译注:关于 -u 和 -v 选项含义,自行看手册研究。-v 是探查的意思--运行中显示每步骤信息--,-u 是更新的意思,覆盖时检查是否原始文件更新才覆盖)
这个命令用于拷贝大文件。
推荐文章: