フォルダ名の文字数を印刷します。

フォルダ名の文字数を印刷します。

フォルダ名の文字数を印刷するためにfind . -type d -print | wc -mwhere-mまたはwillを使用しようとしています。--chars

以下のスクリーンショットを例にすると、文字数は次のようになります。一時フォルダ+一時フォルダ+ディンドンフォルダただ34、スラッシュ、点計算イベントは依然として40。コマンドが印刷される理由43数字?追加された3つのキャラクターはどこから来ましたか?

ここに画像の説明を入力してください。

答え1

find . -type d -print | tr -d '\n' | wc -m

trすべての改行を削除し、wc必要な数を計算します。

答え2

明らかに、末尾の改行も文字と見なされます。

ディレクトリあたりの文字数が必要な場合は、次のようにできます。

$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; 
1
12
27

それはあなたが探している40になります。末尾echo -nの改行が削除されます。

3つすべてを追加することも可能です。

$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; | awk '{S+=$1} END  {print(S)}'
40

答え3

ctbash/ksh/zsh 配列の出力を設定し、wc -lmシェル操作を使用します。

ct=($(find . -type d -print |wc -lm)); echo $((ct[1]-ct[0]))

または、フィールド分割と位置パラメータを使用してください。

set $(find . -type d -print |wc -lm); echo $(($2 - $1))

関連情報