我一直无法准确找到我要找的东西,所以我想问问。我正在寻找一种方法来执行以下操作:
- 扫描包含编号目录 (25-109) 的目录
- 扫描那些编号目录内的目录
- 在所有名为“map.inp”的文件中找到包含以下文本的行:“MAP_93= A 93 A”
- 将所有匹配项更改为“MAP_93= A 93 V”
通常我会手动执行此操作,但大约有 1000 个文件需要在各自的目录中进行编辑。我找到了一个 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
有没有人知道如何做到这一点?如果不清楚,我深表歉意,
最佳答案
在上面提到的find
命令中,您忘记在name
和exec
参数之前添加-
。
find /user/jan10/ -name "map.inp" -exec sed -i 's/MAP_89= A 93 A\+/MAP_93= A 93 V/' {} \;
关于linux - 编辑所有的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792066/