[Linux] 命令行文件夹跨目录的复制(移动)

[Linux] 命令行文件夹跨目录的复制(移动)

命令行中使用cp/mv/rsync跨目录复制或移动目录时, 会碰到要把a放到b下, 结果跑了到了b/a/a, 或者a没过去, a/*跑到了b下, 就总结了一下目录复制(移动)时怎么确保文件不会跑错地方:

cp

跨目录cp目录时, 目标路径是否存在决定操作后的目录结构(层级):

源路径和目标路径后加不加/, 两边文件夹同是否同名, 都不产生影响

目标路径存在时:

`cp -r a b/a` -> `b/a/a`    
`cp -r a b/c` -> `b/c/a`  

目标路径不存在时:

`cp -r a b/a` -> `b/a`      
`cp -r a b/c` -> `b/c`  

也可以使用-T将目标路径视为普通文件:

`cp -frT a b/a; cp -frT a b/a` -> `b/a`      
`cp -frT a b/c; cp -frT a b/c` -> `b/c`  

mv

跨目录mv目录时, 同cp目录, 目标路径是否存在决定操作后的目录结构(层级):

源路径和目标路径后加不加/, 两边文件夹是否同名, 都不产生影响

目标路径存在时:

`mv a b/a` -> `b/a/a`    
`mv a b/c` -> `b/c/a`  

目标路径不存在时:

`mv a b/a` -> `b/a`      
`mv a b/c` -> `b/c`  

也可以使用-T将目标路径视为普通文件:

`mkdir -p b/a; mv -T a b/a` -> `b/a`      
`mkdir -p b/c; mv -T a b/c` -> `b/c`  

rsync

rsync同步目录时, 源路径后加不加/决定操作后的目录结构(层级):

无论目标路径存不存在, 目标路径后加不加/, 两边同是否同名, 都不产生影响

源路径后不加/时:

`rsync -a a b/a` -> `b/a/a`    
`rsync -a a b/c` -> `b/c/a`  

源路径后加/时:

`rsync -a a/ b/a` -> `b/a`     
`rsync -a a/ b/c` -> `b/c`  

也是说源是目录时后面加/类似cp/mv命令操作目录时加的-T参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值