# wc — Zeilen, Wörter und Bytes zählen

> Praxis-Guide zu wc: Zeilen, Wörter, Zeichen und Bytes in Dateien oder Pipes zählen — vom schnellen wc -l bis zur längsten Zeile.

Source: https://www.jpkc.com/db/cheatsheets/files-text/wc/

<!-- PROSE:intro -->
wc (word count) zählt Zeilen, Wörter, Zeichen und Bytes – egal ob in Dateien oder in einer Pipe. Am häufigsten brauchst du `wc -l` für die Zeilenzahl, etwa um Logeinträge, Treffer oder Dateien zu zählen. Übergibst du mehrere Dateien, hängt wc automatisch eine Summenzeile an. Wichtig zu wissen: `-c` zählt Bytes, `-m` dagegen Zeichen (bei UTF-8 also Umlaute korrekt als ein Zeichen), und mit `< datei` statt einem Argument unterdrückst du den Dateinamen in der Ausgabe. Dieser Guide zeigt dir die nützlichsten Varianten für den Alltag.
<!-- PROSE:intro:end -->

## Grundlagen

`wc <file>` — Zeilenzahl, Wortzahl und Bytezahl einer Datei anzeigen.

```bash
wc README.md
```

`wc <file1> <file2>` — Zählungen für mehrere Dateien mit einer Summenzeile anzeigen.

```bash
wc src/*.js
```

`<command> | wc` — Zeilen, Wörter und Bytes aus einer Pipe zählen.

```bash
cat access.log | wc
```

## Zeilen zählen

`wc -l <file>` — Die Anzahl der Zeilen einer Datei zählen.

```bash
wc -l access.log
```

`wc -l <file1> <file2>` — Zeilen in mehreren Dateien mit Gesamtsumme zählen.

```bash
wc -l *.csv
```

`<command> | wc -l` — Die Anzahl der Zeilen einer Befehlsausgabe zählen.

```bash
grep 'ERROR' app.log | wc -l
```

`wc -l < <file>` — Zeilen zählen, ohne den Dateinamen auszugeben (Eingabe umleiten).

```bash
wc -l < data.csv
```

## Wörter zählen

`wc -w <file>` — Die Anzahl der Wörter einer Datei zählen.

```bash
wc -w essay.txt
```

`wc -w <file1> <file2>` — Wörter in mehreren Dateien mit Gesamtsumme zählen.

```bash
wc -w *.md
```

`<command> | wc -w` — Wörter einer Befehlsausgabe zählen.

```bash
echo 'hello world foo bar' | wc -w
```

## Zeichen und Bytes zählen

`wc -c <file>` — Die Anzahl der Bytes einer Datei zählen.

```bash
wc -c image.png
```

`wc -m <file>` — Die Anzahl der Zeichen zählen (multibyte-fähig, beachtet die Locale).

```bash
wc -m utf8-text.txt
```

`wc -c < <file>` — Die Dateigröße in Bytes ohne Dateinamen ermitteln.

```bash
wc -c < archive.tar.gz
```

## Längste Zeile

`wc -L <file>` — Die Länge der längsten Zeile einer Datei anzeigen.

```bash
wc -L config.json
```

`wc -L <file1> <file2>` — Die Länge der längsten Zeile je Datei mit Maximum anzeigen.

```bash
wc -L *.py
```

`<command> | wc -L` — Die Länge der längsten Zeile einer Befehlsausgabe ermitteln.

```bash
cat /etc/hosts | wc -L
```

## Optionen kombinieren

`wc -lw <file>` — Zeilen- und Wortzahl zusammen anzeigen.

```bash
wc -lw README.md
```

`wc -lc <file>` — Zeilen- und Bytezahl anzeigen.

```bash
wc -lc access.log
```

`wc -lwm <file>` — Zeilen, Wörter und Zeichen anzeigen (multibyte-fähig).

```bash
wc -lwm article.txt
```

## Pipelines und Praxismuster

`find <path> -name '<glob>' | wc -l` — Zählen, wie viele Dateien einem Muster entsprechen.

```bash
find src/ -name '*.js' | wc -l
```

`find <path> -name '<glob>' -exec cat {} + | wc -l` — Gesamtzahl der Codezeilen über alle passenden Dateien zählen.

```bash
find src/ -name '*.py' -exec cat {} + | wc -l
```

`git diff --name-only | wc -l` — Die Anzahl der geänderten Dateien im Git-Arbeitsbaum zählen.

`git log --oneline | wc -l` — Die Gesamtzahl der Commits in einem Git-Repository zählen.

`ps aux | wc -l` — Die Anzahl laufender Prozesse zählen (eins für die Kopfzeile abziehen).

`ls -1 <path> | wc -l` — Die Anzahl der Dateien und Verzeichnisse in einem Ordner zählen.

```bash
ls -1 /var/log/ | wc -l
```

`grep -c '' <file>` — Alternative Zeilenzählung mit grep (entspricht wc -l).

```bash
grep -c '' data.csv
```

`wc -l <files> | sort -rn | head -<n>` — Die Dateien mit den meisten Zeilen finden.

```bash
wc -l src/*.js | sort -rn | head -10
```

`wc -l <files> | tail -1` — Nur die Gesamtzeilenzahl über mehrere Dateien ermitteln.

```bash
wc -l *.log | tail -1
```

`awk 'END {print NR}' <file>` — Alternative Zeilenzählung mit awk (nützlich in größeren awk-Skripten).

```bash
awk 'END {print NR}' access.log
```

<!-- PROSE:outro -->
## Fazit

wc ist das schnellste Werkzeug für ein Gefühl von Größe und Umfang und sitzt in unzähligen Pipelines am Ende einer Zählung. Beachte den feinen Unterschied zwischen `-c` (Bytes) und `-m` (Zeichen): Bei reinem ASCII sind beide gleich, bei UTF-8-Text mit Umlauten oder Emojis weichen sie ab. `wc -l` zählt streng genommen die Zeilenumbrüche – endet eine Datei ohne abschließenden Zeilenumbruch, wird die letzte Zeile nicht mitgezählt. Und nutzt du die Eingabeumleitung `wc -l < datei` statt `wc -l datei`, bekommst du nur die nackte Zahl ohne Dateinamen, was sich gut in Skripten weiterverwenden lässt.

## Weiterführende Links

- [Wikipedia: wc (Unix)](https://de.wikipedia.org/wiki/Wc_(Unix)) – Überblick und Funktionsweise des Kommandos
- [ubuntuusers-Wiki: wc](https://wiki.ubuntuusers.de/wc/) – deutschsprachige Einführung mit Beispielen
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [sort](https://www.jpkc.com/db/cheatsheets/files-text/sort/) – Zeilen sortieren
- [uniq](https://www.jpkc.com/db/cheatsheets/files-text/uniq/) – doppelte Zeilen filtern und zählen
- [grep](https://www.jpkc.com/db/cheatsheets/files-text/grep/) – Zeilen nach Mustern durchsuchen (zählt mit -c ebenfalls)

