【问题标题】:Shell script - replace a string in the all the files in a directory based on file nameShell脚本 - 根据文件名替换目录中所有文件中的字符串
【发布时间】:2018-07-31 00:58:09
【问题描述】:

我想根据文件名替换多个文件中的一个常量字符串。

示例: 在一个目录中,我有许多名为“X-A01”、“X-B01”、“X-C01”的文件。 在每个文件中都有一个字符串“SS-S01”。 我想用“X-A01”替换第一个文件中的字符串“SS-S01”,用“X-B01”替换第二个文件,用“X-C01”替换第三个文件。

请帮助我怎么做,因为我有数百个这样的文件,不想一个一个地手动编辑所有文件。

【问题讨论】:

  • 您能否澄清一下在这种情况下“会员”是什么意思?
  • 这里,member 表示脚本文件。

标签: shell


【解决方案1】:

请记住在运行此命令之前备份您的文件(!),因为我自己还没有实际尝试过:

你可以这样做:

for file in <DIR>/*; do sed -i "s/SS-S01/${file##*/}/" "$file"; done

这将遍历&lt;DIR&gt; 中的每个文件,并为每次循环迭代将文件名分配给$file。对于每个文件,sed 将用文件名替换该文件中第一次出现的 SS-S01。

【讨论】:

  • 谢谢@dvaergiller 和本杰明。它运行良好,再次感谢。 :)
  • 很高兴它对您有用。如果您对答案感到满意,请随时关闭问题。
猜你喜欢
  • 2017-11-17
  • 1970-01-01
  • 2013-05-26
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
相关资源
最近更新 更多