首页 > 代码库 > 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<${#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一行的前方加上#
Linux下把目录拷贝到全部同名目录的脚本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。