cp 指令 copy file
cp 指令 copy file
mv 是剪切,cp 就是复制
|
|
cp 复制文件 (或者目录等),可以使用这个命令复制一个文件到一个指定的目的地,或者复制任意多个文件到一个目的目录。很好记,就这两种情况。
分情况,直接看最后一个参数是文件名还是目录,
-
如果最后一个命令参数为一个已经存在的目录名,
cp
会将每一个源文件复制到那个目录下 (维持原文件名),如果源文件为一个目录,则要带上-r
。例如:如果
/b
已经存在,那么cp -r /a /b
会复制/a
到/b
而成为/b/a
,而复制/a/x
到/b
而成为/b/a/x
;但如果/b
事先不存在,它会把/a
复制为/b
,把/a/x
复制为/b/x
,这其实就是复制之后重命名,相当于备份,这一点其实很好用,比如我想备份一个文件夹下的所有内容,我就可以把这个文件夹cp
到一个不存在的目录,这样,就只会复制文件夹的下一级,文件夹本身不会被复制过去),但是注意,在将多个文件复制到一个目录中这种情况下,目录不存在会报错。此外,源文件还可以使用通配符,cp
会将所有匹配的文件复制到目标目录中。此外要注意要分清楚带通配符和不带通配符的区别,
cp -r a/* b/
是把 a 文件夹下的内容递归匹配,复制到 b 下,cp -r a/ b/
直接把 a 复制到 b 下。 -
如果所给的参数只有两个文件名,它把前一个文件复制到后一个文件上.(注意,不是追加,而是内容覆盖),如果目的文件不存在,那么就会新建一个,这就相当于文件备份,这一点也很好用,比如我想要备份 aaa.txt,直接
cp aaa.txt aaa-back.txt
即可。 -
如果最后一个参数不是目录名,而是文件名,那么给出多于两个非选项参数,是错误的。比如
cp aaa.txt bbb.txt ccc.txt
。
参数分析:
-
-a
:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于-dpr
参数组合。 -
-d
:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。软链接,默认不会复制软链接,想要复制链接,需要带上这个参数。 -
-f
:覆盖已经存在的目标文件而不给出提示。(当你是普通用户的时候,不带这个参数的时候也就是默认就会覆盖,但是当你是 root 用户的时候,默认就会提示,应该是因为管理员权限高,需要提示一下防止误删)。在cp
命令前加反斜杠也是强制覆盖的意思,比如:\cp aaa.txt testdir/
-
-i
:与-f
选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。 -
-n
: 目标地址中包含重名文件,直接跳过,与-f
的效果刚好相反 -
-p
:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 -
-r
:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 -
-l
:不复制文件,只是生成链接文件。
常用参数 -a -d -p -r -f -i