使用BOM搜索UTF-8文件的优雅方式?

2022-08-30 07:36:06

出于调试目的,我需要以递归方式在目录中搜索所有以 UTF-8 字节顺序标记 (BOM) 开头的文件。我目前的解决方案是一个简单的shell脚本:

find -type f |
while read file
do
    if [ "`head -c 3 -- "$file"`" == $'\xef\xbb\xbf' ]
    then
        echo "found BOM in: $file"
    fi
done

或者,如果您更喜欢短小的、不可读的单行:

find -type f|while read file;do [ "`head -c3 -- "$file"`" == $'\xef\xbb\xbf' ] && echo "found BOM in: $file";done

它不适用于包含换行符的文件名,但无论如何都不会期望这样的文件。

有没有更短或更优雅的解决方案?

是否有任何有趣的文本编辑器或文本编辑器的宏?


答案 1

那么这个简单的命令,它不仅可以找到而且可以清除令人讨厌的BOM,那该怎么办?:)

find . -type f -exec sed '1s/^\xEF\xBB\xBF//' -i {} \;

我喜欢“寻找”:)

警告以上将修改包含这三个字符的二进制文件。

如果您只想显示 BOM 文件,请使用以下命令:

grep -rl $'\xEF\xBB\xBF' .

答案 2

在Windows上执行此操作的最佳和最简单的方法:

总指挥官→转到项目的根目录→查找文件( + )→文件类型 *.* → 查找文本“EF BB BF”→选中“十六进制”复选框→搜索AltF7

你得到:)列表


推荐