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

标签 php utf-8 shell text-editor

出于调试目的,我需要在目录中递归搜索所有以 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/

相关文章:

python - 当目录不为空时执行 python 脚本 - 目录监控

php - 使用关联的实体字段设置 slug

Windows 上的 PHP + LibPuzzle?

java - 如何通过jdbc将utf8存储到mysql 5.X

java - 通过 RFC 5987 处理带空格的文件名*参数导致文件名中的 '+'

linux - 如何以毫秒为单位获取 2 个日期(Z 格式)之间的差异

shell - 该命令有什么问题...您能找到此命令中的错误吗?

PHP call_user_func & $class->$func() 函数

php - Ubuntu 上的 Symfony 命令行,不使用 PHP

xml - XML 中的 UTF-8 或 ISO-8859-1