Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 跨多个文件搜索关键字并将其替换为文件名_Search_Replace_Filenames - Fatal编程技术网

Search 跨多个文件搜索关键字并将其替换为文件名

Search 跨多个文件搜索关键字并将其替换为文件名,search,replace,filenames,Search,Replace,Filenames,我正在尝试对多个文件进行大规模搜索和替换,在这些文件中,我用当前文件的名称替换文件中的关键字,比如说myKeyword 因此,在file1.php中,短语myKeyword将变成file1; 在file2.php中,它将变成file2; 依此类推,直到所有文件都完成 我想知道是否可以使用脚本或文本编辑器功能实现这一点。使用GNU: $ for filename in $(find . -type f -name "*"); do sed -i "s/myKeyword/$(basename ${

我正在尝试对多个文件进行大规模搜索和替换,在这些文件中,我用当前文件的名称替换文件中的关键字,比如说
myKeyword

因此,在file1.php中,短语
myKeyword
将变成
file1
; 在
file2.php
中,它将变成
file2
; 依此类推,直到所有文件都完成

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

使用GNU:

$ for filename in $(find . -type f -name "*"); do sed -i "s/myKeyword/$(basename ${filename} | cut -f 1 -d '.')/g" "${filename}"; done
  • basename
    :从文件名-
    path/到/file1.txt
    ->
    file1.txt
  • cut-f1-d'.
    :带文件扩展名-
    file1.txt
    ->
    file1
在OSX(BSD sed而不是GNU)上,您需要改为编写
sed-i''s/myKeyword/…
(在
-i
之后是空字符串
'
)。请参阅此答案以了解差异: