在多个文件中搜索和替换带有文件名的关键字

时间:2018-05-24 18:16:58

标签: search replace filenames

我正在尝试进行大规模搜索并替换多个文件,我将文件中的关键字替换为myKeyword,并使用当前文件的名称。

所以在file1.php中,短语myKeyword将成为file1; 在file2.php中,它会变成file2; 等等,直到所有文件都完成。

我想知道是否可以使用脚本或文本编辑器功能。

1 个答案:

答案 0 :(得分:1)

使用GNU sed:

$ for filename in $(find . -type f -name "*"); do sed -i "s/myKeyword/$(basename ${filename} | cut -f 1 -d '.')/g" "${filename}"; done
  • basename:从文件名中删除完整路径-path/to/file1.txt-> file1.txt
  • cut -f 1 -d '.':删除文件扩展名-file1.txt-> file1

在OSX(BSD而不是GNU sed)上,您需要编写sed -i '' "s/myKeyword/...''之后的空字符串-i)。请查看以下答案以了解区别:https://unix.stackexchange.com/a/272041/374001