Möchte man wissen wir viele Dateien sich in einem Ordner unter Linux befinden, so kann man dies leicht durch eine Kombination der Befehle „find“ und „wc“ bewerkstelligen:
find /home/seeseekey/manyfiles/ -type f | wc -l
Der „find“-Befehl listet dabei alle Dateien in dem Ordner auf, während „wc“ (word count) die ausgegebenen Zeilen zählt und man somit die Anzahl der Dateien ermittelt.
Der Befehl, wie du ihn geschrieben hast, durchsucht auch alle Unterverzeichnisse. Das kann natürlich gewollt sein. Wenn man nur die Dateien im aktuellen Verzeichnis listen will, muss man den Befehl entsprechend erweitern:
find /home/seeseekey/manyfiles -maxdepth 1 -type f | wc -l
Viel einfacher: ls -A1 | wc -l
Da sind leider auch Ordner dabei…
Ginge nicht auch:
ls -lA | grep "^\-" | wc -l
finde „find“ für diese Aufgabe etwas zu mächtig und schlage folgende Lösung vor:
ls -l | grep -v ^d | wc -l
* „ls -l“ gibt den kompletten Inhalt des Verzeichnisses unterneinander aus
* „grep -v ^d“ filtert die ls-Ausgabe, das Argument „-v“ invertiert das Suchergebnis, also alles, was im Listing nicht mit „d“ anfängt wird ausgegeben
* „wc -l“ zählt die Zeilen
wäre echt interessant, was schneller ist bzw. weniger Ressourcen verbraucht. Hängt sicher auch von der Größe des Ordners ab
@ jules,
wenn ich deinen Befehl noch etwas anpasse,
ls -lah | grep -v ^d | grep -v ^l | grep -v ^insgesamt | wc -l
dann bekomme ich wirklich alle Dateien angezeigt. ;-)
LG Leo
@leo
OK, das stimmt.
Aber das hier ist dann aber schöner :D :
ls -lah | egrep -iv „^d|^l|^total“ | wc -l
kurzer nachtrag: ^total bei mir, weil mein system englisch ist und das h beim ls ist eigentlich in diesem Fall unnötig
@jules
> Aber das hier ist dann aber schöner :D :
Aber auf jeden Fall !
Danke, hab wieder was dazu gelernt. :-)