我刚刚偶然发现 Notepad++ 中的“在文件中查找”功能会搜索 RAR 档案中的文件。运行几次“查找和替换”查询后,我工作文件夹中的所有 RAR 文件现在都已损坏。
我确实认为在二进制文件中搜索应该是一个可选功能,但目前我真的想退出它。有人知道正确的设置吗?
答案1
Notepad++ 不会在存档文件中搜索和替换。您的存档被损坏是因为您对 RAR 文件本身执行了搜索和替换,而不是对其中包含的文件执行了搜索和替换。
假设您想将文件夹中的所有文本文件从 Mac 转换为 Unix。为此,您必须将所有 CR ( 0x0D
) 字符替换为 LF ( 0x0A
)。我们还假设您的文件夹包含以下名为“Apple.txt.gz”的文件:
1f 8b 08 08 9c c1 81 55 02 00 41 70 70 6c 65 2e
74 78 74 00 0b c9 c8 2c 56 28 2d 4e 4d 51 e0 2d
c9 57 48 4a 55 48 cc e3 75 2c 28 c8 49 55 88 8d
56 48 cb cc 49 d5 e3 05 2b 01 22 de e2 92 cc 9c
1c a0 02 05 0c 15 84 0d 01 00 d3 0c 65 8c 68 00
00 00
这是一个有效的 gzip 存档,其中包含一个小文本文件“Apple.txt”,其中有 Mac 风格的 CR 换行符。请注意,它0d
在倒数第二行包含。
如果你在 Notepad++ 中打开它,它看起来类似于:
‹œÁU Apple.txt ÉÈ,V(-NMQà-ÉWHJUHÌãu,(ÈIUˆVHËÌIÕã+"Þâ’Ìœ „
ÓeŒh
将 CR 替换为 LF 并保存将导致文件损坏。来吧,试试看。
为了避免将来出现这种情况,您应该在“在文件中查找”对话框中指定过滤器。例如,如果您的文件夹包含 .txt、.htm、.html、.rar 和 .avi 文件,并且您只想修改文本文件和 HTML 页面,请输入*.txt *.htm *.html
“过滤器”字段。如果出于某种原因这不切实际,您需要将不应更改的文件移出“在文件中查找”启动的文件夹。
如果要修改档案库里的文件,必须先将其解压,修改后再重新压缩。
答案2
Notepad++ 没有“排除二进制文件”功能。如果您不想检查所有文件,则需要在文件名过滤器中指定要替换的文件。
无论如何,依赖二进制文件检测并不是一个好主意,因为文本文件可能会被混淆为二进制文件(反之亦然)。