zoukankan      html  css  js  c++  java
  • 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/ialias 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/ialias 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一行的前方加上#

  • 相关阅读:
    UIImagePickerController从拍照、图库、相册获取图片
    swift2.0 UIImagePickerController 拍照 相册 录像
    UIImagePickerController拍照与摄像
    iOS 从相机或相册获取图片并裁剪
    Android播放音频的两种方式
    UICollectionView的基本使用
    UIImageView圆角,自适应图片宽高比例,图片拉伸,缩放比例和图片缩微图
    UIView属性clipsTobounds的应用
    iOS开发UI篇—CALayer简介
    chrome插件演示,经js转让chrome api清除浏览器缓存
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7100527.html
Copyright © 2011-2022 走看看