【发布时间】:2018-05-24 18:16:58
【问题描述】:
我正在尝试在许多文件中进行大规模搜索和替换,我用当前文件的名称替换文件中的关键字,比如myKeyword。
所以在 file1.php 中,短语 myKeyword 将变为 file1;
在file2.php 中,它将变为file2;
以此类推,直到完成所有文件。
我想知道这是否可以使用脚本或文本编辑器功能。
【问题讨论】:
我正在尝试在许多文件中进行大规模搜索和替换,我用当前文件的名称替换文件中的关键字,比如myKeyword。
所以在 file1.php 中,短语 myKeyword 将变为 file1;
在file2.php 中,它将变为file2;
以此类推,直到完成所有文件。
我想知道这是否可以使用脚本或文本编辑器功能。
【问题讨论】:
使用 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 sed 而不是 GNU)上,您需要改写 sed -i '' "s/myKeyword/...(-i 之后的空字符串 '')。请参阅此答案以了解差异:https://unix.stackexchange.com/a/272041/374001
【讨论】: