すべてのファイルタイプの検索を使用してfile -b $(find . -type f)
一意のカテゴリに分類し、同じ数の「#」に置き換えられた数字で最初の4つのカテゴリを印刷する必要があります。出力は次のようになります。
8 empty : ########
6 ASCII text : ######
3 Vim swap file, version 7.4 : ###
1 UTF-8 Unicode text : #
各カテゴリのファイル数を「#」マークで印刷する方法がわかりません。
各行の数値を値として、最後に同じ数の「#」マークを入れたいです。
ベストアンサー1
「N文字列で数値Nを表現する方法」という主な質問に答えるには、次のようなシェルコマンドがあります。
n=17 # Number to translate to a sequence
printf "%${n}s" '' | tr ' ' '#'
(代替構文:printf '%*s' "$n" '' | tr ' ' '#'
;他の選択肢がある場合は、ポイントがわかります)
これが行うことは、n
空白(printf
部分)で構成される空白行を作成し、各スペースを目的の文字(tr
部分)に変換することです。
count_files
質問に含まれるリストを出力するコマンドがあると仮定すると、次のようにコマンドを使用できます。
count_files \
| while read n type; do
printf '%4d %-30s %s\n' "$n" "$type" "$(printf "%${n}s" '' | tr ' ' '#')"
done
...そして、次のような結果が得られます。
8 empty ########
6 ASCII text ######
3 Vim swap file, version 7.4 ###
1 UTF-8 Unicode text #