我可以像这样复制一个目录:
~$ cp -r ./Desktop/ /tmp/
同样,如果我只想从目录中复制文件,我可以这样做:
~$ cp -r ./Desktop/. /tmp/
如果我想将源目录复制到目标目录(即源的子目录)中,事情会变得更加棘手。即复制一个目录到它自己。例如:
~$ cp -r ./Desktop/ ./Desktop/sub/
会抛出以下错误:cp: cannot copy a directory, './Desktop/', into its own, './Desktop/sub/'
这可以在某种程度上使用 extglob 绕过,如下所示:
~$ cp -r ./Desktop/!(sub) ./Desktop/sub/
但是,最后一个命令依赖于已经存在的目录sub 。
您如何将目录复制到自身中,以使执行此操作的命令同时创建子目录?
使用
rsync
代替cp
:让我们测试一下:
但是
rsync
会正常工作:您始终可以将
/tmp
用于传输。(无rsync
)或者,创建一个函数:
像这样: