[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
原文地址:https://www.cnblogs.com/bvac/p/5517117.html