Linuxマシンで、ファイル拡張子の制約なしに人間が読める形式のファイルを見つけたいのですが。これらのファイルは、テキスト、構成、HTML、ソースコードなどの人間が感知するファイルである必要があります。フィルタリングして見つける方法はありますか?
74947 次
3 に答える
23
使用する:
find /dir/to/search -type f | xargs file | grep text
find
ファイルのリストが表示されます。
xargs file
file
パイプ入力からの各行でコマンドを実行します。
于 2016-02-03T15:47:29.307 に答える
7
ここであなたの友達を見つけてファイルしてください:
find /dir/to/search -type f -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
これにより、 / dir / to / search内のすべてのファイルが検索され(注:シンボリックリンクディレクトリソケットなどは検索されず、通常のファイルのみが検索されます)、sh -c'file -b{}|を実行します。grepテキスト&> / dev / null'; これはファイルのタイプを調べ、説明内のテキストを探します。これがtrueを返す場合(つまり、テキストが行にある場合)、ファイル名を出力します。
注:ファイルに-bフラグを使用すると、ファイル名が出力されないため、 grepで問題が発生することはありません。たとえば、-b
フラグがないと、バイナリファイルのgettextが誤ってテキストファイルとして検出されます。
例えば、
root@osdevel-pete# find /bin -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
/bin/gunzip
/bin/svnshell.sh
/bin/unicode_stop
/bin/unicode_start
/bin/zcat
/bin/redhat_lsb_init
root@osdevel-pete# find /bin -type f -name *text*
/bin/gettext
圧縮ファイルを調べたい場合は、--uncompress
フラグを使用してファイルします。ファイルの詳細とフラグについては、manファイルを参照してください。
于 2013-01-24T16:06:53.120 に答える
0
これも正常に機能するはずです。
file_info=`file "$file_name"` # First reading the file info string which should have the words "ASCII" or "Unicode" if it's a readable file
if grep -q -i -e "ASCII" -e "Unicode"<<< "$file_info"; then
echo "file is readable"
fi
于 2020-03-07T09:37:08.233 に答える