linux cp拷贝一个文件到另一个目录,cp命令复制文件夹到另一个文件夹的注意事项 - 翟码农技术博客...

最近发现之前写好的shell脚本里cp命令拷贝文件夹,丢失了一层文件夹。才发现cp命令里还有一层这么容易让人混淆的用法,为避免继续踩坑,特此记载。

现在假定文件存在的目录如下面所示:

--from

--from/fone

--from/fone/hello.txt

--to

现要将from文件夹之下的所有目录拷贝到to文件夹之下,使用时就会遇到极易混淆的如下4条命令:cp -rf from/ to

cp -rf from/ to1

cp -rf from/* to

cp -rf from/* to1

第一种:cp -rf from/ to

from整个文件夹都拷贝到to文件夹里去了。

--to

--to/from

--to/from/fone

--to/from/fone/hello.txt

第二种:cp -rf from/ to1

to1代表本来不存在的文件夹。

结果:

from文件夹没有拷贝到to里面去。

--to1

--to1/fone

--to1/fone/hello.txt

第三种:cp -rf from/* to

结果:

和第二种一样,没有复制from文件夹到to文件夹里面去。

--to

--to/fone

--to/fone/hello.txt

第四种:cp -rf from/* to1

结果:

to1下只有最里层的文件。

--to1

--to1/hello.txt

经过实践,上面命令格式可以统一为:cp -rf source target

无论target后面带不带斜杠/,系统都认为它是目录。

不相信你就这样试一下:cp -rf from to1.txt

查看to1.txt文件属性,就是文件夹。

总结:cp -rf source target 命令中target一定是文件夹

由以上4种情况可以得知,当业务中目标文件夹可能存在或不存在时,没有哪一条命令是在两种情况下可以同时使用的,最好的解决办法就是确保目标文件夹一定存在。

拿上面的例子来说,就是拷贝from里面的文件夹之前,先把to文件夹生成好。mkdir -p to

以上4种易混淆的命令,为了加深记忆,我也顺便总结了一下:记忆诀窍:

source里带*的一定是不包含source当前这一层文件夹的。

source里带*的,且target目标目录不存在的,是最特殊的情形:只拷贝最里层的文件。

综上所述,拷贝文件夹的业务,我们以后就通过两条命令的思路来实现就完全OK了。

1.不拷贝source里当前的目录到target里去,即不拷贝from文件夹到to里面:mkdir -p to

cp -rf from/* to

2.要拷贝source里当前的目录到target里去,即to里面要有from这一层文件夹:mkdir -p to

cp -rf from/ to

2019年11月23日 23:07文章创建

2019年11月23日 23:44文章发布

2019年11月24日 15:59文章下架

2019年11月24日 15:59文章发布

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,cp指令用于复制文件目录。引用中提到可以通过输入"cp -af /源目录 /目标目录"来实现覆盖拷贝的效果。然而,实际上并没有达到覆盖的效果,还是会有覆盖的提示。中提到在某些情况下,当拷贝文件比较多时,无论加上-f参数还是其他参数,cp命令仍然会提示是否覆盖,这是不能被忍受的。另外,引用中提到,使用cp命令时还可以使用-l参数来创建链接文件,而不是进行复制操作。下面是几个示例: 1. 将文件复制文件夹中: cp /home/test.txt /tmp/ 这个命令将/home/test.txt复制到/tmp/文件夹中。 2. 将文件夹复制文件夹中: cp -r /home/downloads/ /tmp/ 这个命令将/home/downloads/文件夹复制到/tmp/文件夹中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [linux 文件夹拷贝并覆盖](https://download.csdn.net/download/weixin_38663701/14059311)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Linux cp命令覆盖文件文件夹不提示](https://blog.csdn.net/u012206617/article/details/128340778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Linuxcp复制文件文件夹文件夹](https://blog.csdn.net/weixin_41287260/article/details/126325442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值