sed:将新行添加到文件末尾没有文件的每个文件

我无数

警告:文件结尾处没有换行符

从Windows上最后编辑的一些代码。

在Linux中,如何修复所有这些cpp / h文件,并在没有新行的每个文件的末尾添加新行?

我一直在尝试使用sed

find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print | xargs sed -i -e "$G" 

但是我还没有得到它的工作。

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 >> {}' \; 

请注意,redirect始终是一个问题 – 如果不启动新shell,则不会按需要进行replace。

既然你的问题是关于'sed'的,你也可以这样做:

 find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 sed -i -e '$a\ \' 

(这是一个字面的新行字符 – 不是\ n或其他任何东西 – 可能是最好的复制和粘贴 – 因为它可能很难input:)。

 find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print | xargs dos2unix {}