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.