はい、find
適切なサイズの非実行可能ファイルを検索してfile
から、ASCIIを確認するために使用できます。何かのようなもの:
find . -type f -size 1033c ! -executable -exec file {} + | grep ASCII
しかし、質問は思ったほど簡単ではありません。「人間が読める」というのは恐ろしく曖昧な用語です。おそらく、あなたはテキストを意味します。わかりましたが、どのようなテキストですか?ラテン文字ASCIIのみ?完全なユニコード?たとえば、次の3つのファイルについて考えます。
$ 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
されます。それはあなたが望むものにかなり近いはずですが、説明に文字列が含まれている可能性のある他のファイルタイプがないことを保証することはできませんtext
。