java cp 多目录_cp复制文件到多个目录下及强制覆盖

本文介绍了如何在Linux环境下使用shell脚本来批量将一个文件复制到多个目录下,并且在覆盖已有文件时不会提示确认。通过编写一个简单的bash脚本,结合find命令,可以实现对特定目录下所有子目录的文件复制。同时,文章提到了使用反斜杠()来避免cp命令的覆盖提示,以实现自动覆盖。
摘要由CSDN通过智能技术生成

工作中有遇到要把一个文件拷贝到N个文件夹下,但是cp又没有这样的命令,怎么办,这时需要编写一个脚本,首先做实验如下:

[root@host1 ~]# mkdir test

[root@host1 ~]# cd test

[root@host1 test]# mkdir -p test_123 test_abc test_xyz testlog

[root@host1 test]# cd testlog/

[root@host1 testlog]# echo "Test log" > test.log

[root@host1 testlog]# cat cp.sh

#!/bin/bash

log=test.log

for dir in `find /root/test -name "test_*"`

do

cp $log $dir

done

[root@host1 testlog]# bash -x cp.sh

+ log=test.log

++ find /root/test -name 'test_*'

+ for dir in '`find /root/test -name "test_*"`'

+ cp test.log /root/test/test_xyz

+ for dir in '`find /root/test -name "test_*"`'

+ cp test.log /root/test/test_abc

+ for dir in '`find /root/test -name "test_*"`'

+ cp test.log /root/test/test_123

[root@host1 testlog]# cat /root/test/test_123/test.log

Test log

使用脚本写的命令,是可以强制覆盖原先有的文件的,而没有提示,我们验证下:

[root@host1 testlog]# echo "Test log once" > test.log

[root@host1 testlog]# bash cp.sh

[root@host1 testlog]# cat /root/test/test_123/test.log

Test log once

但是如果我们在命令行使用cp命令,则会提示是否需要覆盖:

[root@host1 testlog]# cp test.log /root/test/test_123/

cp:是否覆盖"/root/test/test_123/test.log"? y

解决这个问题的方法很简单,只需在前面加上"\":

[root@host1 testlog]# echo "Test log once again" > test.log

[root@host1 testlog]# \cp test.log /root/test/test_123/

[root@host1 testlog]#

[root@host1 testlog]# cat /root/test/test_123/test.log

Test log once again

这样就可以解决每次覆盖敲y的烦恼了,是不是很棒^_^

当然还可以取消别名或者修改别名,但是比较麻烦,用完之后还要恢复回来,如果忘记修改回来,对以后的工作可能会造成麻烦哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值