写这个脚本也加深了对 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. C# 中判断字符串是不是汉字

    //1.用ASCII码判断 //在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下: string text = "是不是汉字,ABC,柯乐义"; ; ...

  2. 火狐浏览器下使用jquery修改img的src

    onUploadComplete': function (file, data) { //$("#submit").removeAttr("disabled") ...

  3. Hadoop完全分布式搭建过程中遇到的问题小结

    前一段时间,终于抽出了点时间,在自己本地机器上尝试搭建完全分布式Hadoop集群环境,也是借助网络上虾皮的Hadoop开发指南系列书籍一步步搭建起来的,在这里仅代表hadoop初学者向虾皮表示衷心的感 ...

  4. Javascript设计模式之装饰者模式详解篇

    一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...

  5. Python json解析

    #encoding: utf-8 ''' Author:Siukwan ''' import sys reload(sys) sys.setdefaultencoding('utf8') import ...

  6. SQL注入(三)

    邮给我一个密码 我们意识到虽然不能添加一条新的记录在members表中,但我们可以通过修改一个存在的记录, 这也获得了我们的证明是可行的. 从先前的步骤中,我们知道bob@example.com在系统 ...

  7. crontab 定时的陷阱

    crontab  任务不执行,首先要查询一下cron任务的宿主和语法: (1). /etc/cron.d/cron_zengtai   这个文件必须是 root:root  否则cron_zengta ...

  8. jsp Ajax请求(返回json数据类型)

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  9. 驱动7段LED显示器

    拿到7段LED显示器,先看看是共阴极还是共阳极,如果是共阳极,3和8接5V,5V串联一个220欧姆的电阻. 下面是购买的LED显示器的接线图例 5V串联电阻图例 下面为代码,此代码将实现在LED显示器 ...

  10. linux xfce4普通用户 mount usb提示: Not authorized to perform operation

    问题:xfce4下,USB 硬盘能自动挂载并显示,但是普通用户操作时,提示:Not authorized to perform operation. 时间:20160928 os:gentoo + x ...