为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
杨魅力 2019-10-23 15:49:13
为了进行调试,我需要在目录中递归搜索所有以UTF-8字节顺序标记(BOM)开头的文件。我当前的解决方案是一个简单的shell脚本:find -type f |while read filedo    if [ "`head -c 3 -- "$file"`" == $'\xef\xbb\xbf' ]    then        echo "found BOM in: $file"    fidone或者,如果您希望使用简短的,难以理解的单线:find -type f|while read file;do [ "`head -c3 -- "$file"`" == $'\xef\xbb\xbf' ] && echo "found BOM in: $file";done它不适用于包含换行符的文件名,但是无论如何都不会出现此类文件。有没有更短或更优雅的解决方案?是否有任何有趣的文本编辑器或文本编辑器宏?
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

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


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

我爱“发现” :)


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



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


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


查看完整回答
反对 回复 2019-10-23
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

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


Total Commander →转到项目的根目录→查找文件(Alt+ F7)→文件类型*。*→查找文本“ EF BB BF”→选中“十六进制”复选框→搜索


你会得到列表:)


查看完整回答
反对 回复 2019-10-23
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

find . -type f -print0 | xargs -0r awk '

    /^\xEF\xBB\xBF/ {print FILENAME}

    {nextfile}'

上面给出的大多数解决方案都对文件的第一行进行了更多的测试,即使某些结果(例如Marcus的解决方案)随后对结果进行了过滤。该解决方案仅测试每个文件的第一行,因此应该更快一些。


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 376 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信