每天一个Linux命令(8)cp

每天一个Linux命令(8)cp

cp copy 复制

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

语法
cp(选项)(参数)

选项
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

参数
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

实例
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

cp ../mary/homework/assign .

所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
将文件file复制到目录/usr/men/tmp下,并改名为file1

cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中

cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。

cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。

cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。

\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。

NAME

   cp - copy files and directories

SYNOPSIS

   cp [OPTION]... [-T] SOURCE DEST
   cp [OPTION]... SOURCE... DIRECTORY
   cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION

   Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

   Mandatory arguments to long options are mandatory for short options too.

   -a, --archive
          same as -dR --preserve=all

   --attributes-only
          don't copy the file data, just the attributes

   --backup[=CONTROL]
          make a backup of each existing destination file

   -b     like --backup but does not accept an argument

   --copy-contents
          copy contents of special files when recursive

   -d     same as --no-dereference --preserve=links

   -f, --force
          if an existing destination file cannot be opened, remove it and try again (this option is ignored when the -n option is also used)

   -i, --interactive
          prompt before overwrite (overrides a previous -n option)

   -H     follow command-line symbolic links in SOURCE

   -l, --link
          hard link files instead of copying

   -L, --dereference
          always follow symbolic links in SOURCE

   -n, --no-clobber
          do not overwrite an existing file (overrides a previous -i option)

   -P, --no-dereference
          never follow symbolic links in SOURCE

   -p     same as --preserve=mode,ownership,timestamps

   --preserve[=ATTR_LIST]
          preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all

   -c     deprecated, same as --preserve=context

   --no-preserve=ATTR_LIST
          don't preserve the specified attributes

   --parents
          use full source file name under DIRECTORY

   -R, -r, --recursive
          copy directories recursively

   --reflink[=WHEN]
          control clone/CoW copies. See below

   --remove-destination
          remove each existing destination file before attempting to open it (contrast with --force)

   --sparse=WHEN
          control creation of sparse files. See below

   --strip-trailing-slashes
          remove any trailing slashes from each SOURCE argument

   -s, --symbolic-link
          make symbolic links instead of copying

   -S, --suffix=SUFFIX
          override the usual backup suffix

   -t, --target-directory=DIRECTORY
          copy all SOURCE arguments into DIRECTORY

   -T, --no-target-directory
          treat DEST as a normal file

   -u, --update
          copy only when the SOURCE file is newer than the destination file or when the destination file is missing

   -v, --verbose
          explain what is being done

   -x, --one-file-system
          stay on this file system

   -Z     set SELinux security context of destination file to default type

   --context[=CTX]
          like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX

   --help display this help and exit

   --version
          output version information and exit

   By  default,  sparse  SOURCE  files are detected by a crude heuristic and the corresponding DEST file is made sparse as well.  That is the behavior selected by --sparse=auto.
   Specify --sparse=always to create a sparse DEST file whenever the SOURCE file contains a long enough sequence of zero bytes.  Use --sparse=never to inhibit creation of sparse
   files.

   When  --reflink[=always]  is  specified,  perform  a  lightweight  copy,  where  the data blocks are copied only when modified.  If this is not possible the copy fails, or if
   --reflink=auto is specified, fall back to a standard copy.

   The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.  The version control method may be selected via the --backup option or through the VERSION_CONTROL
   environment variable.  Here are the values:

   none, off
          never make backups (even if --backup is given)

   numbered, t
          make numbered backups

   existing, nil
          numbered if numbered backups exist, simple otherwise

   simple, never
          always make simple backups

   As a special case, cp makes a backup of SOURCE when the force and backup options are given and SOURCE and DEST are the same name for an existing, regular file.

   GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report cp translation bugs to <http://translationproject.org/team/>

AUTHOR

   Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering.

COPYRIGHT

   Copyright © 2013 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
   This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.

SEE ALSO

   The full documentation for cp is maintained as a Texinfo manual.  If the info and cp programs are properly installed at your site, the command

          info coreutils 'cp invocation'

   should give you access to the complete manual.

本文链接:

https://heyzen.club/index.php/Coder/105.html
1 + 7 =
快来做第一个评论的人吧~