Unix-将一个目录的内容复制到另一个目录


90
Folder1/
    -fileA.txt
    -fileB.txt
    -fileC.txt

> mkdir Folder2/

> [copy command]

现在Folder2/看起来像:

Folder2/
    -fileA.txt
    -fileB.txt
    -fileC.txt   

如何做到这一点?我已经尝试过,cp -r Folder1/ Folder2/但最终得到了:

Folder2/
    Folder1/
        -fileA.txt
        -fileB.txt
        -fileC.txt

这很接近,但不完全是我想要的。

谢谢!

Answers:


124

试试这个:

cp Folder1/* Folder2/

3
但这不会复制隐藏文件,对吗?
Fabrizio Regini 2014年

9
正确。cp -R会,但那会递归复制,因此您可能会或可能不想使用它。您可以cp Folder1/.* Folder2/只复制隐藏的文件。
杰夫2014年

1
请注意,如果您使用“ sudo”或等效名称并且目录包含许多文件,则此操作将失败。我知道了sudo: unable to execute /bin/cp: Argument list too long
内森·奥斯曼

请注意,SCP的语法略有不同,请参见此处:stackoverflow.com/a/26346339/1984636
sivi

不要这样 在Linux上执行“ cp -rT src dest”,在BSD上执行“ cp -R src / dest”。
xpusostomos

47

非常简单,带有*通配符。

cp -r Folder1/* Folder2/

但是根据您的示例,不需要递归,因此满足以下条件:

cp Folder1/* Folder2/

编辑:

或者跳过该mkdir Folder2部分,然后运行:

cp -r Folder1 Folder2

如果ls | sort -k1.5 | head -8 > folder1那怎么办?
Pooja

你只是失去了所有的隐藏文件。不要这样 在Linux上执行“ cp -rT src dest”,在BSD上执行“ cp -R src / dest”。
xpusostomos

23

要进行精确的复制,权限,所有权以及所有内容,请使用“ -a”和“ cp”。“ -r”将复制文件的内容,但不一定会使其他内容保持不变。

cp -av源/ *目标/

(确保目标/首先存在)

如果要反复从一个更新到另一个,或者确保您也复制了所有的点文件,则将rsync有很大的帮助:

rsync -av --delete源/目标/

这也是“可恢复的”,因为如果在复制时中止它,则可以重新启动它。我喜欢“ -v”,因为它可以让您观看发生了什么,但是可以忽略它。


1
有什么-v用?
HattrickNZ 2014年

冗长,只是看发生了什么。
布莱恩·怀特

1
如果文件很多,该-v选项可能需要一些时间。如果您不需要输出,则-a仅使用。
Eyal Levin

1
您必须在相当慢的网络连接上运行,文本输出才能使副本变慢。即使这样,也可能只是命令提示符的返回,而不是副本本身。
布莱恩·怀特

您丢失了隐藏文件。在Linux上执行“ cp -rT src dest”,在BSD上执行“ cp -R src / dest”。
xpusostomos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.