Linux Unix递归地替换文件中的反斜杠

Linux Unix递归地替换文件中的反斜杠,linux,unix,recursion,sed,escaping,Linux,Unix,Recursion,Sed,Escaping,我有一个带有文本文件(php、html等)的大型目录树结构。我需要搜索在这些文件中经常出现的字符串,并将\翻转为/。我需要它递归地遍历整个结构。我已经看到了一些关于如何做到这一点的建议,但我无法让它们为我工作 搜索:\MySite\scripts\connection.php 替换为:/MySite/scripts/connection.php 我试过这个,但没用: find ~/Desktop/administration/ -type f -exec grep -l '\MySite\scr

我有一个带有文本文件(php、html等)的大型目录树结构。我需要搜索在这些文件中经常出现的字符串,并将
\
翻转为
/
。我需要它递归地遍历整个结构。我已经看到了一些关于如何做到这一点的建议,但我无法让它们为我工作

搜索:
\MySite\scripts\connection.php

替换为:
/MySite/scripts/connection.php

我试过这个,但没用:

find ~/Desktop/administration/ -type f -exec grep -l '\MySite\scripts\connection\\' {} \; -exec sed -i 's#\MySite#\scripts#\connection.php\#/MySite#/scripts#/connection/#g' {} \;

grep
是不必要的,而且您的
#


如果
sed-i
选项不可用,它将与简单脚本一起工作

for file in `find ~/Desktop/administration/ -type f`
do
    sed 's#\MySite\scripts\connection.php#/MySite/scripts/connection.php#g' "$file" > tmp_file && mv tmp_file "$file"
done

谢谢我收到此错误:
sed:-I可能不用于stdin
-I
用于文件内更改。你在mac电脑上吗?如果是这样的话,
find~/Desktop/administration/-type f-exec sed-i'.bak's#\MySite\scripts\connection.php#/MySite/scripts/connection.php{}
Upps,
find
应该将文件名作为参数传递给
sed
,这样它就不会从
stdin
中读取,而且它似乎在Linux中对我有效@如果在Mac@jaypalsingh中我收到以下错误,jaypalsingh注释应该很有用:
sed:RE-error:invalize byte sequence
。非UTF-8文件可能会导致非法字节序列。你跳过二进制文件吗。ASCII文件是否按预期工作?谢谢,但这也不起作用。我得到两个不同的重复错误:
mv:tmp:没有这样的文件或目录
sed:RE错误:非法字节序列
。似乎您的文件名可能包含一些特殊字符。你能检查一下吗。
for file in `find ~/Desktop/administration/ -type f`
do
    sed 's#\MySite\scripts\connection.php#/MySite/scripts/connection.php#g' "$file" > tmp_file && mv tmp_file "$file"
done