Wie man die Anzahl der Dateien in einem Verzeichnis zählt, aber nicht rekursiv


30

Einfache Frage, da bin ich mir sicher. Ich habe eine Antwort gesehen , die zeigt, wie es gemacht wird, einschließlich der Unterverzeichnisse, aber ich möchte wissen, wie viele Dateien (nicht Ordner) sich nur im aktuellen Verzeichnis befinden. Vielen Dank.

Antworten:


60
ls -F |grep -v / | wc -l
  1. ls -F liste alle Dateien auf und hänge das Kennzeichen (eines von * / => @ |) an die Einträge an
  2. grep -v /Bewahren Sie alle Zeichenfolgen auf, die keinen Schrägstrich enthalten
  3. wc -l Zeilen zählen

Liste von allem außer Verzeichnissen.
thom

Ich weiß es wirklich zu schätzen, dass Sie es herausbrechen und die Abschnitte erklären. Vielen Dank für eine funktionierende und gut erläuterte Antwort!
bcsteeve

1
Während alle Antworten mein Problem lösen, wähle ich dieses als dokumentiert und für mich am einfachsten zu verstehen. Aber danke an alle!
bcsteeve

15

Versuchen Sie diesen Oneliner:

find -maxdepth 1 -type f | wc -l

Das ist gut, nur Dateien und sonst nichts :-)
thom

Dadurch werden Links und Sonderzeichengeräte übersprungen.
Ojblass

Alle Antworten hier funktionieren super! Also erstmal DANKE. Zweitens ... wie wähle ich?
bcsteeve

6

Versuche dies

ls -al | grep ^[-] | wc -l
  1. ls -al - Alle Dateien mit langem Listenformat auflisten
  2. grep ^[-] - Suche nach Zeichenketten, die mit "-" beginnen, was ein Symbol für die reguläre Datei ist, wenn die Datei mit ls -al aufgelistet wird
  3. wc -l - Zeilen zählen

Was ist mit Softlinks? Was ist mit fest verknüpften Dateien?

Schön, nur Dateien und Links, sonst nichts.
thom

Für Soft / Hard-Link jut ersetzen -durchl
andr3w

Ich weiß es wirklich zu schätzen, dass Sie es herausbrechen und die Abschnitte erklären. Vielen Dank für eine funktionierende und gut erläuterte Antwort!
bcsteeve

2

Ich möchte nur die Antwort von thom hinzufügen , weil ich gerne mit Bash spiele . Hier kommt's:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Unten ist ein Beispiel für ein Ergebnis meines /dataVerzeichnisses:

Directory /data has 580569 file(s).

Und unten sind meine Erklärungen:

  1. echo double-quoted-message druckt eine gewünschte Nachricht.
  2. $(any-desirable-valid-command)In der Nachricht in doppelten Anführungszeichen von echowird das Ergebnis der zugehörigen Befehlsausführung ausgegeben.
  3. pwd druckt das aktuelle Verzeichnis.
  4. ls -Fdient zum Auflisten aller Dateien und zum Anhängen eines Zeichens (eines von * / => @ |) an Einträge. Ich habe das aus der Antwort von thom kopiert .
  5. grep -v /Ist ein Befehl zum Durchsuchen von Klartext. Der -v /Parameter behält alle Zeichenfolgen bei, die keine Schrägstriche enthalten.
  6. wc -l druckt die Zeilenzählung.

Ich weiß, dass diese Frage 3 Jahre alt ist. Ich kann meinen Drang, eine weitere Antwort hinzuzufügen, einfach nicht halten.


2

Wenn Sie treeauf Ihrem System installiert haben , können Sie diesen Befehl verwenden:

tree -L 1 /path/to/your/directory | tail -n 1

Es zeigt Ihnen die Anzahl der Dateien und Verzeichnisse in diesem Verzeichnis.

-L n zeigt die Tiefe der Suche.

Sie können installieren treemit sudo apt-get install tree.


-3

Um die Gesamtzahl der Dateien mit einer bestimmten Erweiterung zu zählen, können Sie Folgendes eingeben:

ls|grep jpg |wc -l
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.