我得到了无数
警告:文件末尾没有换行符
来自 Windows 中最后编辑的一些代码。
在 Linux 中,我如何修复所有这些 cpp/h 文件并在每个没有换行符的文件末尾添加一个新行?
我一直在尝试使用 sed:
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print | xargs sed -i -e "$G"
但我还没让它工作。
答案1
在没有dos2unix
- 这将是理想的方式,请尝试:
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 -iFILE sh -c 'echo >> FILE'
或者
find . -type f \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -exec sh -c 'echo >> {}' \;
请注意,重定向始终是一个问题 - 如果不启动新的 shell,替换就不会按预期进行。
由于您的问题是关于“sed”的,所以您也可以这样做:
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 sed -i -e '$a\
\'
(这是一个文字换行符 - 而不是 \n 或其他任何字符 - 最好通过复制和粘贴来完成 - 因为输入起来可能相当困难:)。
答案2
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print | xargs dos2unix {}