这个问题有没有什么简单的方法呢?

ls /xx/yy/zz/
account   bank   cost   fee   limit    payrule    rcms   remit    txq   user  ........
bank    boss    cust    fin     notify    pos        ation    port     sett    trade   .........
需求:
执行这些目录下 service-*.sh 脚本(脚本最后一行是exit 0)时 自动拷贝执行脚本的脚本的父目录的全部内容到/aa/bb/backup/目录名+日期
eg:sh /xx/yy/zz/account/service-account.sh ==> 拷贝 account 到 /aa/bb/backup/account`date +%Y%m%d`

一种很low的办法就是每个脚本手动加入语句(并且每个脚本中加入的语句多不同)

把下面语句加入所有的service-*.sh 语句中(所有脚本只需要加入同样的语句):

SDIR=/xx/yy/zz
DDIR=/aa/bb/backup
dir=`find $SDIR -name "service-*.sh"|grep $0|awk -F‘/‘ ‘{print $(NF-1)}‘`
#原本dir=`pwd|awk -F ‘/‘ ‘{print $NF}‘`来取dir的,但是执行脚本的路径变了就不行了
cp -a ${SDIR}/$dir ${DDIR}/${dir}`date +%Y%m%d`

怎么循环把上面语句加入文件中呢?

for file in `find /aa/bb/backup -name "service-*.sh"`
do
sed -i ‘s#exit 0#SDIR=/xx/yy/zz \n&#‘ $file
sed -i ‘s#exit 0#DDIR=/aa/bb/backup/ \n&#‘ $file
#sed -i ‘s#exit 0#dir=`find $SDIR -name "service-*.sh"|grep $0|awk -F‘/‘ ‘{print $(NF-1)}‘` \n&#‘ $file
#sed -i ‘s#exit 0#cp -a ${SDIR}/$dir ${DDIR}/${dir}`date +%Y%m%d` \n&#‘ $file
#上面这两句加入有问题。。。。
done

时间: 2024-11-05 15:17:17

这个问题有没有什么简单的方法呢?的相关文章

MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题

首先,环境:ubuntu 14.04,采用apt-get的方式安装的,手动安装可能路径设置稍有区别. 1.安装MySQL后,用命令行首次启动时发现找不到Mysqld.sock文件,提示: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2),如图: 2.网上的方法很多不实用,这里介绍一种最简单的方法来解决这个问题. # sudo /etc/i

php批量删除cookie的简单实现方法

这篇文章主要介绍了php批量删除cookie的简单实现方法,实例分析了删除单个cookie及数组遍历的方式批量删除cookie的技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了php批量删除cookie的简单实现方法.分享给大家供大家参考.具体实现方法如下: <?php //删除单个cookie:键值设置为空.时间设置为过期了的时间 setCookie("name","",time()-60); //删除多个cookie,采用遍历数组方式 foreac

如何用最简单的方法将PCweb改成适合各种设备的web

使web页面自适应设备大小 1)用一个<div>包围<body>的内容 2)该div属性的宽度设为100%   (宽度设为100%后,页面会随着设备窗口大小自动改变) 3)高度:通过window.innerHeight获得设备高度在通过jQuery的css()动态改变元素 (如果没有设高度,则页面高度会随着内容高度的变化而变化) 1 <style> 2 *{ 3 margin:0; 4 padding:0; 5 } 6 .knr{ 7 margin:0 auto; 8

找1~100之间素数的两种比较简单的方法

方法一:利用一个布尔类型的值的判断,优点想法更直接易懂 public static void main(String[] args) { for(int i=2;i<=100;i++){ boolean b=true; for(int n=2;n<i;n++){ if(i%n==0){ b=false; break; } } if(b==true){ System.out.print(i+"\t"); } } } 方法二:能被2和这个数本身以外的数整除的都不是素数.理解难但

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方

用jsonp来解决跨域问题的三种简单的方法

jsonp实现跨域的方法 使用ajax方法获取数据不能跨域,为了解决这个问题,普遍使用jsonp来实现跨域,下面是对jsonp方法的简单总结: 例子:假如想获取京东的评论的数据,可以在京东的评论面板打开network找到和ajax请求相关的有回调函数callback的请求url, 如找到一个url, 如: 在响应里可以找到回调函数对应的方法: 这是在服务器上写入的方法用来传输数据. 例如获取到的url为 https://club.jd.com/comment/productPageComment

TabHost 简单使用方法

package com.google.tabhost; import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; public class HelloTabHost extends TabActivity { /** Called when the activity is first created. */

Centos6.4 搭建Git服务器 (最简单的方法)

下载 git-1.8.2.tar.gz tar -zvxf git-1.8.2.tar.gz cd git-1.8.2.2 sudo make prefix=/usr/local/git all sudo make prefix=/usr/local/git install git –version 查看版本 以上是服务器安装. 下面是建库. centos服务器上建库及测试 mkdir /git cd /git git –bare init //建立空仓库 git ssh-keygen (建本地

Linux下禁止ping最简单的方法

LINUX下禁止ping命令的使用 以root进入Linux系统,然后编辑文件icmp_echo_ignore_allvi /proc/sys/net/ipv4/icmp_echo_ignore_all将其值改为1后为禁止PING将其值改为0后为解除禁止PING 直接修改会提示错误: WARNING: The file has been changed since reading it!!!Do you really want to write to it (y/n)?y"icmp_echo_i

去掉有序数组中重复数字 原地 leetcode java (最简单的方法)

1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with consta