需求:拷贝文件夹到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下把目录拷贝到全部同名目录的脚本的更多相关文章

  1. 通过find命令寻找文件并拷贝到一个指定目录方法详解

    有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,可以通过使用find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录   将通过find命令找到的文件拷贝到一个 ...

  2. 使用scp将文件/目录拷贝到另一台Linux主机上

    如何将一台Linux主机上的文件或目录拷贝到另一台Linux主机上,scp命令可以实现该需求 前提条件:两台Linux主机处于同一网段,可以互相ping通 操作如下: 文件拷贝 ①将本地文件拷贝到远端 ...

  3. Linux 命令 - cp: 拷贝文件和目录

    命令格式 cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY ...

  4. Linux SSh scp使用【远程文件/目录的传输】

    一:Linux ssh scp的简介及作用: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器. 有时我们 ...

  5. linux rpm 安装后 mysql 默认安装目录等信息

    MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件.配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比 ...

  6. Linux 目录详解 树状目录结构图

    1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...

  7. linux工具:快速返回某级父目录--bd

    当我们在linux服务器上切换父目录时,通常使用cd ../../,有几级目录就输入几次"../",如果目录嵌套的过深,就会有点晕菜...因此,本次介绍的这款工具,可以快速的返回指 ...

  8. cmake指定程序输出目录和库文件输出目录和拷贝文件

    概述 本文样式环境: win10+cmake 3.18 本文将介绍使用CMAKE配置项目输出目录和 LIbrary项目的输出目录 本文将介绍 cmake的file函数的基础用法之拷贝文件 重点, 这些 ...

  9. 阿里云服务器Linux CentOS安装配置(零)目录

    阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...

随机推荐

  1. 【Codeforces】Codeforces Round #374 (Div. 2) -- C. Journey (DP)

    C. Journey time limit per test3 seconds memory limit per test256 megabytes inputstandard input outpu ...

  2. HBase与RDBMS的区别

    此讨论并不局限于HBase,也会延伸到MongoDB和Cassandra这样的NoSQL数据库. 1.RDBMS RDBMS有以下特点: 面向视图:RDBMS表使用固定的视图,表中的数据类型也会事先定 ...

  3. Asp.net MVC4 Step by Step (2)-参数数据的传递

    首先创建一个表单,不同于WebForm,框架提供了一系列HMTL帮助方法来生成HTML标签. 下面创建一个Create.cshtml为文件名的视图. <h2> Create Auction ...

  4. CSS3之 transform和animation区别

    CSS3 有3种和动画相关的属性:transform, transition, animation.其中 transform 描述了元素静态样式.而transition 和 animation 却都能 ...

  5. Java中final,finally和finalize区别

    Day11_SHJavaTraing_4-18-2017 Java中final,finally和finalize区别 1.final—修饰符(关键字) ①final修饰类,表示该类不可被继承 ②fin ...

  6. 修复Thinkphp框架5.0和5.1版本的远程代码执行安全漏洞

    由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞.最直接的影响为index.php直接被篡改成首页html的内容! 5.0版本 thinkphp/libr ...

  7. 原生js封装ajax,深入理解$.ajax()

    直接上代码 //封装的ajax函数 // 传一个对象,所有要用的参数都在对象中 因为不写对象 实参列表个数太多,所以像jq一样,调用ajax也是把对象当实际参数传进去 // type 请求方式 默认g ...

  8. centos 配置svn http serve

    你看到的这个文章来自于http://www.cnblogs.com/ayanmw 基本的安装包有: subversion /httpd/ svn的httpd的mod_dav_svn mod_authz ...

  9. [luogu3244 HNOI2015] 落忆枫音(容斥原理+拓扑排序)

    传送门 Description 给你一张 n 个点 m 条边的DAG,1 号节点没有入边.再向这个DAG中加入边 x→y ,求形成的新图中以 1 为根的外向树形图数 模 10^9+7 . Input ...

  10. 爬虫系列(八) 用requests实现天气查询

    这篇文章我们将使用 requests 调用天气查询接口,实现一个天气查询的小模块,下面先贴上最终的效果图 1.接口分析 虽然现在网络上有很多免费的天气查询接口,但是有很多网站都是需要注册登陆的,过程比 ...