写这个脚本也加深了对 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. Java 在本地文件中查找固定字符串

    适用范围:只适用于在文本文档中查找(如,txt.java.c等等,并不适用与doc.xls等等这些文件),可嵌套文件夹.但是对中文不支持. 例如:文件夹:F:/demo 子文件夹:F:/demo/er ...

  2. ASP.NET 程序发布详细过程

    前言 ASP.NET网站的发布,无论是初学者还是高手,在程序的发布过程中或多或少会存在一些问题,譬如VS发布ASP.NET程序失败.IIS安装失败.IIS发布失败.局域网内不能访问 配置文件错误.权限 ...

  3. Caffe安装过程错误处理方法

    1. 错误1: fatal error: caffe/proto/caffe.pb.h: No such file or directory 解决方法: You need to generate ca ...

  4. svg滤镜学习

    SVG滤镜绝对称得上是他最强大的功能之一,在不影响任何文档结构的前提下,允许你给你的矢量图形添加各种专业视觉效果,我个人给他的定义就是,把PS装到了网页上. 一.  SVG滤镜的原理 基本原理描述太多 ...

  5. CodeForces 721C Journey

    $dp$,拓扑排序. 记$dp[i][j]$表示走到节点$i$,走过了$j$个点的最小时间,然后就可以递推了.要注意的是节点$1$的入度一开始不一定等于$0$. #pragma comment(lin ...

  6. SwiftyUserDefaults-封装系统本地化的框架

    // // ViewController.swift // Test4SwiftyUserDefaults // // Created by 马玉龙 on 2017/1/14. // Copyrigh ...

  7. 自定义连接池java.lang.ClassCastException: com.sun.proxy.$Proxy4 cannot be cast to java.sql.Connection

    原因:Connection.getInterfaces() 与数据库驱动有关,数据库驱动不同 Connection.getInterfaces() 的结果也就不同,Connection.getInte ...

  8. 文档在线预览开源实现方案三:OpenOffice + PDFRenderer + js

    之前的方案无法很好地解决异构平台及不同浏览器的兼容性问题,如方案一需要客户端浏览器支持flash而移动端浏览器无法支持这点,虽然移动端浏览器支持方案二,但是一些老版本的IE浏览器无法支持,例如IE8就 ...

  9. Xcode插件推荐

    deriveddata-exterminator: A magic button in Xcode to exterminate the current project's DerivedData d ...

  10. [MFC美化] Skin++使用详解-使用方法及注意事项

    主要分为以下几个方面: 1.Skin++使用方法 2.使用中注意事项 一. Skin++使用方法 SkinPPWTL.dll.SkinPPWTL.lib.SkinPPWTL.h ,将三个文件及相应皮肤 ...