写这个脚本也加深了对 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、JAVA及其它主流IT技术使用情况和优点缺点。

    横瓜执导众程序员开展大讨论关于C.JAVA及其它主流IT技术使用情况和优点缺点. 遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个 ...

  2. 横瓜先生关于如何利用MYSQL数据库设计CMS系统处理100亿级TB规模的数据量

    遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个字段就算用索引,也需要扫描至少100w以上记录. 横瓜(601069289)  1 ...

  3. (转)Tomcat 配置成https协议

    Tomcat 配置成https协议 TomcatXMLServlet  在命令提示符窗口,进入Tomcat目录,执行以下命令: keytool -genkey -alias tomcat -keyal ...

  4. office全系列激活脚本-改良版

    @ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...

  5. AndroidStudio引入so文件

    项目中需要引入几个 so文件,但APP一直崩溃报错 java.lang.UnsatisfiedLinkError: Couldn't load ad from loader dalvik.system ...

  6. 使用Netsil监控Kubernetes上的微服务

    ubernetes是容器编排和调度领域的王者,它击败了竞争对手Docker Swarm和Apache Mesos,开启了闪耀的未来,微服务可以自修复,可以自动扩展,可以跨zone,region甚至跨云 ...

  7. JavaScript编写连连看

    这几天写题比较少,做了一下网页设计的期末大作业.搞了个连连看,核心代码和hdu 1175那个题目一样. 越来越觉得学ACM是十分有用的,软件的核心是数据结构和算法,学会了DFS,连连看就水到渠成了. ...

  8. WHAT?【 $.fn.extend() 】vs【 $.extend() 】

    废话不多说,干货来了,转自http://www.cnblogs.com/hellman/p/4349777.html (function($){ $.fn.extend({ test:function ...

  9. @Transactional问题记录下

    系统中多数据源  在control 层 分别使用不同数据源的service ,有个service 调用相应的dao直接出现表或视图不存在,发现这个service类上加了@Transactional 注 ...

  10. 舒适的路线 (code[vs] 1001)

    传送门 :code[vs]  1001 思路:拿到这题的首先的思路 , 就是跑一遍最短路. 可是在尝试了一会后发现不会写,于是果断弃 尝试另外的算法.. 于是就有的以下的算法.并查集 + 乱搞(有点像 ...