一尘不染

用BOM搜索UTF-8文件的简便方法?

php

为了进行调试,我需要在目录中递归搜索所有以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

它不适用于包含换行符的文件名,但是无论如何都不会出现此类文件。

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

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


阅读 276

收藏
2020-05-26

共1个答案

一尘不染

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

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

我爱“发现” :)

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

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

grep -rl $'\xEF\xBB\xBF' .
2020-05-26