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.

bcsteeve
quelle

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
thom
quelle
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
amc
quelle
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
andr3w
quelle
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.

Aditya Kresna
quelle
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.

MOHRE
quelle
-3

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

ls|grep jpg |wc -l
Alexander Chip
quelle