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<${#array}; 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]}
拷贝文件
<pre name="code" class="cpp" style="font-size: 14px; line-height: 21px;">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一行的前方加上#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值