# Alle Zeilen eines Verzeichnisses zaehlen



## Wolfsbein (7. Januar 2006)

Hallo
ich kann mit wc -l datei.txt die Anzahl Zeilen einer Datei ausgeben. Was ist aber wenn ich eine Zusammenfassung aller ASCI (= nicht binaere) Dateien im Verzeichnis haben will? wc -R gibt es nicht. Vermutlich muss da ein augewachsenes Script her, nur bin ich leider kein Unix Guru. Gibt es eine Alternative? Danke.


----------



## Dennis Wronka (7. Januar 2006)

Willst Du wissen wie viele Dateien in einem Verzeichnis sind?
Dann probier mal folgendes:

```
ls | wc
```


----------



## Wolfsbein (7. Januar 2006)

Nein ich meinte schon die Gesamtzeilenanzahl aller Dateien.


----------



## Dennis Wronka (7. Januar 2006)

Dann probier doch mal

```
cat * | wc
```


----------



## Wolfsbein (7. Januar 2006)

Das tuts zumindest fuer ein Verzeichins, aber leider nicht rekursiv. Was ja mein Hauptproblem ist .


----------



## Dennis Wronka (7. Januar 2006)

Ich schau morgen mal. So langsam muss ich mal in die Falle.


----------



## RedWing (7. Januar 2006)

Hallo,


```
cat `find . -type f` | wc -l
```

tuts.

Gruß

RedWing


----------



## RedWing (7. Januar 2006)

> Zusammenfassung aller ASCI (= nicht binaere) Dateien



Das hab ich überlesen...
Aber wüsste im Moment auch nicht wie man das rausfindet.

Man koennte höchstens die Dateierweiterungen überprüfen. Dann muessten aber alle 
deine Ascii Dateien mit einer bestimmten Endung enden..
Oder du sagst du beschränkst dich auch Executables dann kannst du für die Überprüfung
das Kommando file verwenden...

Gruß

RedWing


----------



## deepthroat (7. Januar 2006)

Hi.

Du könntest auch z.B. mit file den Typ der Dateien (vom Inhalt her) bestimmen.

Also in etwa so: (Bash)
	
	
	



```
find . -type f | file -if - | \
  while { IFS=$' \t\n:'; read file mime; }; do 
    if [[ "$mime" == text/* ]]; then 
      echo -ne "$file\0"; 
    fi; 
  done | xargs -0 cat | wc -l
```

Der Code sollte auch korrekt funktionieren für Dateienamen mit Leerzeichen etc.

Gruß


----------



## Wolfsbein (8. Januar 2006)

RedWing hat gesagt.:
			
		

> ```
> cat `find . -type f` | wc -l
> ```


Also hier wird definitiv rekursiv gesucht. Nur aus irgend einem Grund auf der ganzen Platte und nicht im Verzeichnis? Kann das an cygwin liegen?
Das letzte Beispiel geht leider gar nicht, weil wohl -file r eher file -r heissen muesste. Aber -r als Option ist unbekannt.
Ich glaube ich schreib mir einfach schnell ein kleines Java Programm.


----------



## RedWing (8. Januar 2006)

Zu meinem Teil kann ich sagen, versuch doch mal den kompletten absoluten Pfad zum 
Verzeichniss anzugeben und nicht nur einen .

Gruß

RedWing


----------



## Wolfsbein (8. Januar 2006)

Hat doch schon gestimmt. Nur werden eben auch binaere Dateien aufgelistet. Daher die vielen Zeilen und ich habe gedacht er sucht auf der ganzen Platte.


----------



## deepthroat (8. Januar 2006)

Wolfsbein hat gesagt.:
			
		

> Das letzte Beispiel geht leider gar nicht, weil wohl -file r eher file -r heissen muesste. Aber -r als Option ist unbekannt.


Nein, genau so wie es da steht stimmt es schon, allerdings ist das Kommando file unbekannt weil das Programm unter cygwin standardmäßig nicht installiert wird. Du kannst natürlich nochmal das setup Programm aufrufen und file (zu finden in der Sektion Utils) nachinstallieren.

Gruß


----------



## Wolfsbein (8. Januar 2006)

Also mein Mac sagt: find: -type: r: unknown type 
Das Gleiche gilt fuer Cygwin, nur auf Deutsch . Aber mach dir keinen Kopf. So wichtig ist es nicht.


----------



## deepthroat (8. Januar 2006)

Ja, da hast du natürlich Recht. Ich war nur etwas verwirrt weil du von "file" gesprochen hast, korrekt muß es natürlich so heißen wie bei RedWing auch "-type f".

Gruß

*/edit*: Übrigens, wenn du das jetzt unter Java programmierst, wie erkennst du denn da deine ASCII Dateien (und was meinst du eigentlich damit? Wirklich nur Dateien in ASCII Code oder Textdateien?)?


----------

