用带sed的斜杠字符替换字符串

用带sed的斜杠字符替换字符串,sed,Sed,我有一个目录树,里面有几个文件。 我想在每个文件中替换字符串index.html作为字符/。 由于/是一个特殊字符,我如何指示linuxsed命令以便更改目录下的所有文件 谢谢 Sed通常与分隔符一起使用。实际上,您可以使用任何符号作为分隔符,sed只使用s命令之后的第一个符号。例如sed's |/| slash |'。或者你可以像sed s/\//slash/那样转义。这是一个危险的命令,小心,备份你的目录: for file in `find /your/dir/ -type f`; do

我有一个目录树,里面有几个文件。 我想在每个文件中替换字符串index.html作为字符/。 由于/是一个特殊字符,我如何指示linuxsed命令以便更改目录下的所有文件

谢谢

Sed通常与分隔符一起使用。实际上,您可以使用任何符号作为分隔符,sed只使用s命令之后的第一个符号。例如sed's |/| slash |'。或者你可以像sed s/\//slash/那样转义。这是一个危险的命令,小心,备份你的目录:

for file in `find /your/dir/ -type f`; do sed -i "$file" 's|index.html|/|g'; done

图案的第一个字符决定分隔符;/没有什么特别之处,它只是经常被视为分隔符。如果我需要在模式中使用/,我喜欢使用@。e、 g.echo'a/index.html'| sed's@index.html@/@g'给出了一个//或者,尽管可能不像Nick的建议那样可读,但在典型的Unix方式中,可以使用`:sed's/index.html/\//g'`Boo,hiss.-如果名称包含空格或可以解释为全局字符,则此操作将严重失败。另请参见。编写find/your/dir/-type f-exec sed-i-e的| index.html |/| g'{}更安全、更高效+