出于调试目的,我需要在目录中递归搜索所有以 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
它不适用于包含换行符的文件名, 但无论如何也不会出现这样的文件。
有没有更短或更优雅的解决方案?
是否有任何有趣的文本编辑器或文本编辑器的宏?
最佳答案
这个不仅可以找到而且可以清除讨厌的 BOM 的简单命令怎么样? :)
find . -type f -exec sed '1s/^\xEF\xBB\xBF//' -i {} \;
我喜欢“寻找”:)
警告以上将修改包含这三个字符的二进制文件。
如果您只想显示 BOM 文件,请使用此文件:
grep -rl $'\xEF\xBB\xBF' .
关于php - 用 BOM 搜索 UTF-8 文件的优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/204765/