Ordnernamen drucken - Zeichenanzahl

Ordnernamen drucken - Zeichenanzahl

Ich versuche, find . -type d -print | wc -m„where“ zu verwenden -m, oder --charsich würde die Zeichenanzahl der Ordnernamen drucken.

Nehmen Sie den folgenden Screenshot als Beispiel, die Zeichenanzahl fürtempOrdner+tempOrdner+dingdongOrdnerist nur34, und selbst das Zählen der Schrägstriche und Punkte ist immer noch40. Warum der Befehl ausgibt43Zeichen? Woher kommen die 3 zusätzlichen Zeichen?

Bildbeschreibung hier eingeben

Antwort1

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

trlöscht alle Zeilenumbruchzeichen und wczählt die gewünschte Anzahl.

Antwort2

Offenbar werden auch nachfolgende Zeilenumbrüche als Zeichen gezählt.

Angenommen, Sie möchten die Zeichenanzahl pro Verzeichnis, dann können Sie

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

Das ergibt zusammen die 40, nach denen Sie suchen. Beachten Sie, dass echo -ndie nachfolgenden Zeilenumbrüche entfernt werden.

Auch eine Summierung dieser drei ist möglich.

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

Antwort3

ctLegen Sie für die Ausgabe von ein Bash-/Ksh-/Zsh-Array fest wc -lmund verwenden Sie dann die Shell-Arithmetik.

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

Oder verwenden Sie Feldaufteilung und Positionsparameter:

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

verwandte Informationen