【发布时间】:2012-02-13 12:45:50
【问题描述】:
我正在尝试在给定主目录和子目录中的所有文档中将“my-silly-home-page-name.html”的名称更改为“index.html”。
我看到了这个:Shell script - search and replace text in multiple files using a list of strings。
还有这个:How to change all occurrences of a word in all files in a directory
我试过这个:
grep -r "my-silly-home-page-name.html" .
这会找到文本所在的行,但现在我想用“my-silly-home-page-name”替换“index”。 我将如何使用 sed 或 perl 执行此操作? 还是我什至需要 sed/perl?
类似:
grep -r "my-silly-home-page-name.html" . | sed 's/$1/'index'/g'
?
还有;我正在尝试使用 perl,并尝试以下操作:
perl -i -p -e 's/my-silly-home-page-name\.html/index\.html/g' *
这可行,但是当 perl 遇到目录时出现错误,提示“无法进行就地编辑:SOMEDIR-NAME 不是常规文件, 第 N 行”
谢谢, jml
【问题讨论】:
-
我也在问一个关于 perl 的问题,一般来说,使用一种方法相对于另一种方法的优势是什么。
-
我还特别想知道有关目录的 perl 问题的解决方案...
标签: perl unix sed grep replace