it-swarm.com.de

Listet Dateien mit einer bestimmten Erweiterung auf

Ok, das ist seltsam. Ich benutze diesen Code,

ls *.prj

Um alle Dateien mit der Erweiterung .prj im Verzeichnis aufzulisten, aber ich erhalte diesen Fehler.

bash:/bin/ls: Argumentliste zu lang

Ich möchte schließlich die Anzahl der Dateien erhalten, und ich habe verwendet,

ls * .prj | wc -l

Aber auch dieser Befehl gibt den gleichen Fehler. Irgendeine Idee, wo ich falsch liege?

5
Sam007

Nichts, die Anzahl der Argumente, mit denen Bash umgehen kann, ist begrenzt. Machen

ls | grep '\.prj$' | wc -l
1
January

Verwenden Sie stattdessen den Befehl find

 find . -name "*.prj"

Sie können die Befehle auch mit find kombinieren

find . -name "*.prj" -exec COMMAND {} \;

Hoffe das hilft.

8
devav2

Das Parsen der Ausgabe von ls ist unzuverlässig . Es wird wahrscheinlich in Ihrem Fall funktionieren, aber ls entstellt nicht druckbare Zeichen. Hier finden Sie eine absolut zuverlässige Methode zum Zählen der Dateien, die mit einer bestimmten Erweiterung übereinstimmen. Dieses Shell-Snippet erstellt ein Array mit den Dateinamen und gibt dann die Anzahl der Elemente im Array aus.

a=(*.prj)
echo ${#a[@]}
3
Gilles