Shell脚本-根据文件名替换目录中所有文件中的字符串

时间:2018-07-30 10:57:36

标签: shell

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

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

请帮助我,因为我有成百上千个这样的文件,并且不想手动编辑所有文件,所以我们该怎么做。

1 个答案:

答案 0 :(得分:1)

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

您可以执行以下操作:

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

这将循环<DIR>中的每个文件,并为每次循环迭代将文件名分配给$ file。对于每个文件,sed都会用文件名替换该文件中第一次出现的SS-S01。