将所有\\替换为文件和子目录中的/

时间:2017-03-19 16:38:00

标签: linux bash

我需要一个快速命令(linux或windows)用/替换每个\\,并且所有使用sed的尝试都因为/而失败。 (我已经尝试了find . -name '*.*' -exec sed -i 's/\\///g' {} \;,但我认为它失败了“/".

1 个答案:

答案 0 :(得分:1)

find . -name '*.*' -type f -exec sed -i 's:\\\\:/:g' {} \;

您需要转义每个反斜杠,并且在使用正斜杠替换时,通常建议使用冒号或逗号作为分隔符。但是,逃避正斜杠也是有效的:

find . -name '*.*' -type f -exec sed -i 's/\\\\/\//g' {} \;

正如评论中指出的那样,操作系统模块可能就是你真正需要关注的内容。

修改:感谢@tripleee提醒我-type f行,它将其限制为文件,而不是包含当前目录。

另外,我从OP复制了语法*.*,但一般情况下它没有帮助。仅*通常就是你想要的,因为文件不能保证名字中有一个点。假设您很乐意包含不包含点的文件,那么最简单的方法就是没有-name

find . -type f -exec sed -i 's:\\\\:/:g' {} \;