以下は、現在のディレクトリ内のすべてのテキストファイルの一覧です。
file --mime-type * -F$'\t' | awk -F'\t *' '$2 ~/^text\/plain/ { print $1 }'
注:これは一般的に問題ではありませんこれは、あなたのファイル名が埋め込まれたタブも埋め込まれた改行もないを持っていることを前提としています。 、手元のファイル名、タブ(-F'$\t'
)続いて、位置合わせのためのスペースが続く:
file --mime-type * -F$'\t'
は、現在のフォルダ内の各ファイルのファイルタイプ(*
)を決定し、二列のリストを印刷しますMIMEタイプとして表されるファイルタイプが続きます。
awk -F'\t *' '$2 ~/^text\/plain/ { print $1 }'
MIMEタイプ(フィールド2、$2
)は(^
)で始まる場合、次いで、ファイル名とMIMEタイプ(-F'\t *
)に各行を解析テストストリングtext/plain
と、もしそうであれば、フィールド1(ファイル名を印刷$1
)。 、ループ内で結果のファイルを処理while
を使用するには
:あなたはがfor file in *
ループ内で条件付きでコールfile
を得るが、上記のアプローチがあることを
while IFS= read -r textfile; do
# Work with "$textfile"
done < <(file --mime-type * -F$'\t' | awk -F'\t *' '$2 ~/^text\/plain/ { print $1 }')
注意はるかに効率的です。レコードの
は、ここにあなたが条件付きでコマンドを使用する方法は次のとおりです。
if [[ $(file -b --mime-type "$file") == 'text/plain'* ]]; then ...
はhttp://mywiki.wooledge.org/ParsingLsを参照してください - あなたはスクリプトで 'ls'を使用しないでください。 globはより効率的です(シェルの外部のプログラムは必要ありませんが、 '/ bin/ls'は別の実行可能ファイルです)、もっと正確です(リンクを参照)。 –
... @ mklement0の答えには、正確性よりもパフォーマンスのために行われたトレードオフを含むブランチが含まれていますが、少なくともそこには意図的な選択肢があり、その代わりに何かが得られます。 (個人的には、私はその選択をしません.PDFを作成することは、すべてのファイルで実行するような非効率な作業をしない限り、 、新規のものとは対照的に、定期的/間接的に)。 –