我将数百万生成的SVG文件从DOS转移到Linux盒子,并且意识到每个文件的最后一个字符(文件字符的DOS结尾)都有^ @,当我尝试显示时出错浏览器中的SVG文件。
在这个问题中: How can I remove the last character of the last line of a file?
Maroun给出了解决方案:
sed '$ s/.$//' your_file
但是当我修改它时看起来像这样:
sed '$ s/.$//' *.SVG
或
find . -print | grep .SVG | sed '$ s/.$//'
它不起作用。
我还希望能够指定它只应删除最后一个字符,如果它是^ @。
有人可以告诉我我做错了什么或如何让它发挥作用。 SVG文件位于数千个子目录中,因此我需要能够从树结构的顶部到底部进行更改。
答案 0 :(得分:1)
我猜测你的第一个例子不起作用,因为它只采用*.SVG
扩展的最后一个文件。第二个示例(带有find
命令的示例)失败,因为您将查找的输出传递给sed
而不是文件内容。
另外,如果你想更改文件'使用sed
的内容,您需要使用-i
,以便执行更改"到位"。
你可以试试这个:
for file in *.SVG
do
sed -i '$ s/.$//' $file
done
或者:
find . -name "*.SVG" -exec sed -i '$ s/.$//' {} \;