Bash脚本编辑全部

时间:2014-11-07 00:35:17

标签: linux bash sed

我无法找到我正在寻找的东西,所以我想我会问。我正在寻找一种方法来做到以下几点:

  1. 扫描包含编号目录的目录(25-109)
  2. 扫描那些编号目录内的目录
  3. 在名为“map.inp”的所有文件中找到包含文字的行:“MAP_93 = A 93 A”
  4. 将所有出现次数更改为“MAP_93 = A 93 V”
  5. 通常我会手动执行此操作,但在他们自己的目录中大约有一千个文件要编辑。我找到了一个linux方案来实现这一点,但我不确定如何使用具有相同功能的Bash脚本。要修改的文件都具有相同的名称map.inp。

    路径都在jan10目录中,但是在这样的子目录中:

    /user/jan10/100/100A/map.inp
    /user/jan10/99/99A/map.inp
    

    我找到的linux方案可以这样工作:

     find /user/jan10/ \
     name map.inp \
     exec sed -i~ 's/MAP_93=   A   93 A\+/MAP_93=   A   93 V/' {} \;
    

    所需的输入将是:

    MAP_89=   A   93 A
    

    输出:

    MAP_93=   A   93 V 
    

    有没有人知道如何做到这一点?如果不清楚,我道歉,

1 个答案:

答案 0 :(得分:1)

您忘记在上述-命令中的nameexec参数之前添加find

find /user/jan10/ -name "map.inp" -exec sed -i 's/MAP_89=   A   93 A\+/MAP_93=   A   93 V/' {} \;