假设我有以下文件结构:
~/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(太技术性)来复制隐藏文件。(因为 * 会忽略隐藏文件)