And*_*man 9 command-line directory cp
我可以像这样复制一个目录:
~$ cp -r ./Desktop/ /tmp/
Run Code Online (Sandbox Code Playgroud)
同样,如果我只想从目录中复制文件,我可以这样做:
~$ cp -r ./Desktop/. /tmp/
Run Code Online (Sandbox Code Playgroud)
如果我想将源目录复制到目标目录(源的子目录)中,事情会变得更加棘手。即复制一个目录到它自己。例如:
~$ cp -r ./Desktop/ ./Desktop/sub/
Run Code Online (Sandbox Code Playgroud)
会抛出以下错误:cp: cannot copy a directory, './Desktop/', into its own, './Desktop/sub/'
这可以在某种程度上使用 extglob 进行导航,如下所示:
~$ cp -r ./Desktop/!(sub) ./Desktop/sub/
Run Code Online (Sandbox Code Playgroud)
但是,最后一个命令依赖于已经存在的目录子。
您如何将目录复制到自身中,以这样的方式执行此操作的命令同时创建子目录?
Rav*_*ina 13
使用rsync代替cp:
rsync -Rr ./Desktop/ ./Desktop/sub/
Run Code Online (Sandbox Code Playgroud)
让我们测试一下:
$ cd /tmp
$ mkdir -p Desktop/sub
$ touch Desktop/a-file
$ ls -F Desktop
a-file sub/
$ cp ./Desktop ./Desktop/sub
cp: cannot copy a directory, './Desktop', into itself, './Desktop/sub/Desktop'
Run Code Online (Sandbox Code Playgroud)
但是rsync会正常工作:
$ rsync -Rr ./Desktop/ ./Desktop/sub/
$ ls -F Desktop/sub/
Desktop/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10708 次 |
| 最近记录: |