查找所有具有以下字符的文件:�

查找所有具有以下字符的文件:�

拥有庞大的代码库(主要是 2Gb 代码),其中德语中的有效 utf8 符号被以下符号替换:“�”

有没有办法可以可靠地找到包含此内容的所有文件? Visual Studio Code“有时”会查找文件,但不一致。这很奇怪。

grep -rnw . -e '�'

只能在少数二进制文件和 .png 文件中找到它们,而在文本文件(.c、.h、.m 等)中根本找不到它们。

有任何想法吗?非常感谢!

答案1

答案应该基于:

grep -axv '.*' file.txt

查找(递归地)所有文件名( -l) 包含无效字符,请使用:(
是,不需要文件名)

grep -rlaxv '.*'

grep -axv '.*'
  • -a 是打开对 grep 可能显示为二进制(而不是文本)的文件。
  • 用于-x选择整行(下一个选项需要)。
  • -v反转所选择的内容(与 协同工作-x)。
  • 正则表达式.*将匹配任何有效的特点。与 反转-v,整个命令将匹配包含任何内容的任何整行无效的特点。

但是,请理解有效或无效的定义取决于正在读取的文件的编码。如果您的系统默认使用 UTF-8 编码,则该命令将检测无效的 UTF-8 序列。更改您的区域设置以检测其他编码。

此外,该命令的目标是找到无效的人物。如果目标是查找实际字符“�”,则只需搜索它们:

grep -oP '�' file

或者,为了避免混淆它是哪个字符(在 bash、ksh、zsh 中),列出匹配的文件名:

grep -rloP $'\Ufffd'

更多的这个答案中给出了详细信息

当然,这不会使固定文件,只需列出它们。要实际修复文件(如果可能),请发布问题的示例。两三行就足够了。

相关内容