【发布时间】:2014-11-07 00:35:16
【问题描述】:
我无法准确找到我正在寻找的东西,所以我想我会问。我正在寻找一种方法来执行以下操作:
- 扫描包含编号目录 (25-109) 的目录
- 扫描那些编号目录内的目录
- 在所有名为“map.inp”的文件中找到包含以下文本的行:“MAP_93= A 93 A”
- 将所有匹配项更改为“MAP_93= A 93 V”
通常我会手动执行此操作,但在它们自己的目录中大约有一千个文件需要编辑。我找到了一个 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
有没有人知道如何做到这一点?如果不清楚,我深表歉意,
【问题讨论】: