linux下同名文件夹,Linux下把文件夹复制到所有同名文件夹的脚本

需求:复制文件夹到Linux目录下,覆盖该Linux目录下所有同名文件夹

目标:Linux下,执行本脚本,输入文件夹名,即可批量复制覆盖。

使用说明:

先把本脚本文件和要复制的文件夹移到将要覆盖的Linux目录,之后执行本脚本即可。

执行命令:

./tcopy.sh

1.如果提示-bash: ./tcopy.sh: Permission denied,那要先赋给其权限:

chmod +x tcopy.sh

再执行./tcopy.sh即可。

2.觉着麻烦的话 sh tcopy.sh也行。

逻辑说明:

原系统的cp命令,是cp -i命令,这样执行cp命令是无法自动覆盖的。所以改文件~/.bashrc,最后再改回。

读取用户输入文件名,用通配符把全文件夹放于数组

循环结构把原文件夹下所有文件放入所有数组。

代码:

#!/bin/sh

sed -i 's/alias cp/#&/' ~/.bashrc  >/dev/null

echo "Please input the filename:"

read name

array=($name*)

name2="$name/*"

for ((i=1; i

do

cp -r $name2 ${array[$i]}

done

sed -i "/#alias cp/i\alias cp='cp -i'" ~/.bashrc  >/dev/null

sed -i '/#alias cp/d' ~/.bashrc  >/dev/null

保存文件为tcopy.sh

代码说明:

sed -i 's/alias cp/#&/' ~/.bashrc  >/dev/null

把~/.bashrc文件中的alias cp一行给注释掉

array=($name*)

使用通配符把所有文件夹放入数组

name2="$name/*"name2

为原文件夹目录下所有文件

${#array}

获取数组长度

cp -r $name2 ${array[$i]}

复制文件

sed -i "/#alias cp/i\alias cp='cp -i'" ~/.bashrc  >/dev/null

sed -i '/#alias cp/d' ~/.bashrc  >/dev/null

改回~/.bashrc文件

风险项:

原~/.bashrc文件未必是alias cp='cp -i'

如果使用本脚本后,出现复制文件每次都询问是否覆盖即:cp: overwrite,

请手动修改~/.bashrc文件,在alias cp一行的前方加上#

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值