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

#!/bin/bash
#2015-11-23
echo -e "说明:\n将文件放在/app/tmp_class目录下,保证该目录下没有其他文件\n备份目录在/app/tmp下以时间命名\n\n"
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

[bash] 查找替换文件的更多相关文章

  1. sublime text3怎么批量查找替换文件夹中的字符

    在编写代码的时候,往往有些代码是重复的,但是如果要改一处代码,其他的地方也要改.那么怎么批量修改呢?下面小编就以sublime text3为例来讲解一下sublime text3怎么批量查找替换文件夹 ...

  2. linux 小技巧(查找替换文件中的ascii编码字符)

    这里纪录一些linux下用到的小技巧,以免遗忘 在linux中经常碰见各种文件处理.最常用的就是替换文件中的某些字符.常见字符替换还是很容易完成.但是有些不可见字符以及ascii编码字符等等都无法直接 ...

  3. sublime text3 批量查找替换文件夹或项目中的字符

    1.点击左上角的“菜单”,在弹出的菜单中选择“打开文件夹”. 2.在文件夹上右击,选择“在文件夹中查找”选项 3.之后会软件底部会弹出对话框,分别输入要查找的内容和替换的内容,最后点击替换按钮 4.再 ...

  4. 使用 sed 命令查找和替换文件中的字符串的 16 个示例

    当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...

  5. linux 批量替换文件内容及查找某目录下所有包含某字符串的文件

    转载请注明来源:https://www.cnblogs.com/hookjc/ 1. sed C代码   grep -rl matchstring somedir/ | xargs sed -i 's ...

  6. servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本

    package servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; ...

  7. 文件6. 查找替换.txt文本文件中的内容

    servlet实现对文本文件的查找替换 .jsp界面 <form> <table> <tr> <td>选择文本文件:</td> <td ...

  8. Go实现查找目录下(包括子目录)替换文件内容

    [功能] 按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换. [缺陷] 1. 没有过滤出文本文件 2. 当文件过大时,效率不高 [代码] package main i ...

  9. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符

    1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符 在命令模式下,使用正则表达式匹配 行首有空白字符行的模式:^[[:space:]] ...

随机推荐

  1. 设计模式(二)-- 外观模式(Facade)

    设计模式(二) 外观模式(Facade) 为了解决子系统外部的客户端在使用子系统的时候,既能简单地使用这些子系统内部的模块功能,而又不用客户端去与子系统内部的多个模块交互的问题. 为子系统中的一组接口 ...

  2. Android监听WebView滑动到底部

    MainActivity如下: package cn.testwebview; import android.app.Activity; import android.graphics.Bitmap; ...

  3. Fragment与Activity交互(使用Handler)

    1.在Activity中定义一个方法用来设置Handler对象 public void setHandler(Handler handler) {mHandler = handler;} 2.在Fra ...

  4. json文件报expected name at 1 1错误

    在eclipse编辑json文件时出现expected name at 1 1错误,解决方式如下: 方法一:json文件是不支持注释的,把所有/* content */删除即可 如果不想删除注释-- ...

  5. Js-Html 前端系列--页面撑开头尾

    今天学习过程中,发现一个超实用的方法,就是当页面有尾部,但是内容又不多的情况下,让中间的内容把尾部撑到底部. <script type="text/javascript"&g ...

  6. 基于AFNetworking 3.0的取消已发出的网络请求

    一般情况下主动取消请求的需求不会太多 除非以下几种情况 1.比如电商应用为例 请求频繁,数据量大 2.对性能的要求比较高 3.网络环境比较差 当一个用户打开一个界面 看到的却是漫长的等待框 这时候用户 ...

  7. [ios3-地图] 如何在iOS地图上高效的显示大量数据 [转]

    [转至:http://blog.csdn.net/pjk1129/article/details/17358337] 原文:How To Efficiently Display Large Amoun ...

  8. 笔记本WiFi共享

    1.桌面右击新建txt文件复制下面两行代码,修改文件后缀名为bat保存文件 netsh wlan set hostednetwork mode=allow ssid=zhangxh key=xiaoh ...

  9. list、dict、tuple的一些小操作总结

    一.list 1.赋值(append) list.append(data) 2.去重 list(set(list)) list_gpcode = list(set(list(dfQuery.index ...

  10. sql的ExecuteScalar(),ExecuteNonQuery()

    一,ExecuteScalar ExecuteScalar()也返回一个int型变量.如果SQL语句是Select查询,则仅仅返回查询结果集中第一行第一列,而忽略其他行和列.如果SQL语句不是Sele ...