フォルダー名の文字数を印刷する

フォルダー名の文字数を印刷する

フォルダー名の文字数を印刷するfind . -type d -print | wc -mwhere-mまたはを使用しようとしています。--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

ctの出力にbash/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))

関連情報