zoukankan      html  css  js  c++  java
  • [bash] 查找替换文件

    写这个脚本也加深了对 bash 数组的理解。

    #!/bin/bash
    #2015-11-23
    echo -e "说明:
    将文件放在/app/tmp_class目录下,保证该目录下没有其他文件
    备份目录在/app/tmp下以时间命名
    
    "
    echo "1./app/tomcat/"
    echo "2./app/tomcat_8081/"
    echo "3./app/tomcat_thirdparty/"
    read -p "选择替换哪一个tomcat下的文件?   " num
    case $num in
        1)
            files=($(find /app/tmp_class/ -type f))
            for file in "${files[@]}"
            do
                file_name=$(basename "$file")
                file_dir=`dirname $file`
                dst_dir=($(find /app/tomcat/webapps -type f -name "${file_name}" -exec dirname {} ;))
                if [ ${#dst_dir[@]} -eq 1 ];then
                    rsync -a -b --backup-dir=/app/tmp/$(date +%m%d_%H_%M) $file ${dst_dir[0]}
                elif [ ${#dst_dir[@]} -gt 1 ];then
                    echo $file"在以下目录中都存在,请手工 cp -a"
                    echo ${dst_dir[@]}
                else
                    echo $file"不存在,不知道怎么替换!"
                    echo "请手动cp"
                fi
            done
        ;;
        2)
            files=($(find /app/tmp_class/ -type f))
            for file in "${files[@]}"
            do
                file_name=$(basename "$file")
                file_dir=`dirname $file`
                dst_dir=($(find /app/tomcat_8081/webapps -type f -name "${file_name}" -exec dirname {} ;))
                if [ ${#dst_dir[@]} -eq 1 ];then
                    rsync -a -b --backup-dir=/app/tmp/$(date +%m%d_%H_%M) $file ${dst_dir[0]}
                elif [ ${#dst_dir[@]} -gt 1 ];then
                    echo $file"在以下目录中都存在,请手工 cp -a"
                    echo ${dst_dir[@]}
                else
                    echo $file"不存在,不知道怎么替换!"
                    echo "请手动cp"
                fi
            done
        ;;
        3)
            files=($(find /app/tmp_class/ -type f))
            for file in "${files[@]}"
            do
                file_name=$(basename "$file")
                file_dir=`dirname $file`
                dst_dir=($(find /app/tomcat_thirdparty/webapps -type f -name "${file_name}" -exec dirname {} ;))
                if [ ${#dst_dir[@]} -eq 1 ];then
                    rsync -a -b --backup-dir=/app/tmp/$(date +%m%d_%H_%M) $file ${dst_dir[0]}
                elif [ ${#dst_dir[@]} -gt 1 ];then
                    echo $file"在以下目录中都存在,请手工 cp -a"
                    echo ${dst_dir[@]}
                else
                    echo $file"不存在,不知道怎么替换!"
                    echo "请手动cp"
                fi
            done
        ;;
        *)
            echo "error number"
    esac
    
  • 相关阅读:
    ESlint中console.log报错问题
    for、forEach、for in、for of用法
    如何覆盖elementUI样式
    什么是闭包(closure),为什么要用它?
    写一个通用的事件侦听器函数
    javascripts 浅拷贝和深拷贝
    箭头函数
    用 async/await 来处理异步
    DOM事件类
    arguments 详解
  • 原文地址:https://www.cnblogs.com/bvac/p/5517117.html
Copyright © 2011-2022 走看看