我正在尝试进行大规模搜索并替换多个文件,我将文件中的关键字替换为myKeyword
,并使用当前文件的名称。
所以在file1.php中,短语myKeyword
将成为file1
;
在file2.php
中,它会变成file2
;
等等,直到所有文件都完成。
我想知道是否可以使用脚本或文本编辑器功能。
答案 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