是的,您可以find
用来查找正确大小的不可执行文件,然后用于file
检查ASCII。就像是:
find . -type f -size 1033c ! -executable -exec file {} + | grep ASCII
但是,问题并不像听起来那么简单。“人类可读”是一个非常模糊的术语。想必您是指文字。好的,但是什么样的文字呢?仅拉丁字符ASCII?完整Unicode?例如,考虑以下三个文件:
$ cat file1
abcde
$ cat file2
αβγδε
$ cat file3
abcde
αβγδε
$ cat file4
#!/bin/sh
echo foo
这些都是文本并且易于阅读。现在,让我们看看file
它们的构成:
$ file *
file1: ASCII text
file2: UTF-8 Unicode text
file3: UTF-8 Unicode text
file4: POSIX shell script, ASCII text executable
因此,find
上面的命令只能找到file1
(就本例而言,假设这些文件有1033个字符)。您可以展开find
以查找字符串text
:
find . -type f -size 1033c ! -executable -exec file {} + | grep -w text
使用-w
,grep
将仅打印在text
独立单词中找到的行。那应该非常接近您想要的内容,但是我不能保证没有其他文件类型的描述也可能包含string text
。