为什么 cp 不能复制指定文件夹

为什么 cp 不能复制指定文件夹

假设我有以下文件结构:

~/DIR1
-fileA
-DIR2
--fileB

然后,在〜中,我运行此脚本:

cp DIR1 NEWDIR2

然后就发生了错误:

cp: omitting directory ‘DIR1’

我理解为什么没有从 DIR1 复制任何内容(因为我没有使用强制递归的 -r 开关)但我希望 DIR1 文件夹本身被复制到 NEWDIR2(因此实际上是在 ~ 中创建一个新的“NEWDIR2”或创建 ~/NEWDIR2/DIR1)。

有人能向我解释为什么我的期望是错误的吗?

答案1

来自 cp 的 GNU 信息页面:

默认情况下,“cp”不会复制目录。但是,“-R”、“-a”和“-r”选项可使“cp”通过进入源目录并将文件复制到相应的目标目录来进行递归复制。

https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation

答案2

cp 无法复制目录,除非使用 -R、-r 或 -a 等开关。

点击这里查看更多信息

答案3

cp -r src dest #(OOPS!!)

如果目标存在或不存在,上述行为会有所不同。如果你仔细想想,这并不愚蠢。如果
你想将一个目录复制到另一个目录,只需将源目录中的每个目录和文件复制到目标即可。

cp -r src/* dest 

上述操作可以完成您想要的操作(根据需要使用 -a),但您还需要使用“midnight commander”或 GLOBIGNORE(太技术性)来复制隐藏文件。(因为 * 会忽略隐藏文件)

相关内容