我有一些最初在 Windows 上开发的 C 源代码。现在我想在 Linux 上进行它的工作。有大量的 include 指令需要更改为 Linux 格式,例如:
#include "..\includes\common.h"
我正在寻找一个命令行来遍历所有.h
文件.c
,找到包含指令并将任何反斜杠替换为正斜杠。
答案1
find
+ GNUsed
解决方案:
find . -type f -name "*.[ch]" -exec sed -i '/^#include / s|\\|/|g' {} +
"*.[ch]"
- 通配符查找扩展名.c
或的文件.h
-i
:GNUsed
扩展,可就地编辑文件,无需备份。 FreeBSD/macOSsed
有类似的扩展,但语法-i ''
不同。/^#include /
- 在遇到/匹配以模式开头的行时:#include
s|\\|/|g
\
-用正斜杠替换所有反斜杠/
(\
用反斜杠转义\
以进行文字表示)。
答案2
我已经通过以下命令完成了
输入.txt
#include "..\includes\common.h"
命令:
sed 's/\\/\//g' input.txt
输出
#include "../includes/common.h"