(cp命令正解)linux下复制目录中所有文件及子目录(包括隐藏文件)

正解:
cp -ri /opt/a/. /opt/b

误区一:
cp -r /opt/a/.* /opt/b
.* 包括了所有的文件和目录,但是也把 . 和.. 这两个包括在内,所以会递归复制,父目录的所有文件。

误区二:
cp -r /opt/a /opt/b
分两种情况讨论
  如果/opt/b不存在,则创建。并且把/opt/a中所有的文件和子目录都复制到/opt/b中。相当于克隆了一个目录。
  如果/opt/b存在,将把/opt/a文件夹本身复制到/opt/b中,复制成功后,目录结构为/opt/b/a

文件归档

当我们去拷贝一个目录时,我们会用-r或者-R选项。但是我们也可以用-a选项来归档文件。这样会创建文件和目录的准确套录,如果有的话也可以包括符号链接。下面是示例:[译注:-a 会保留原文件或目录的属性]

显示正在做什么

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

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

我们用 -u选项来实现。下面是具体示例:

  1. $ cp -vu *.txt /home/pungki/office

 

使用交互模式

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

创建备份文件

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

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