@cosinus: Da erhältst Du vielleicht die Anzahl. Dateinamen können auch Zeilenumbrüche enthalten. Und *.sh
sollte man dringend in Anführungszeichen setzen, denn sonst expandiert die Shell das vor dem Aufruf falls im aktuellen Arbeitsverzeichnis Dateien liegen auf die das Muster passt.
Edit: Wenn man nur die Dateien (insgesamt) zählen wollte, könnte man das so machen:
| find /home -name '*.sh' -exec echo \; | wc --lines
|
@giphy86: Ich nehme mal an in Deinem dritten Absatz im ersten Beitrag fehlen irgendwie Trennzeichen. Kannst Du die eventuell nachliefern, damit man nicht raten muss welche Worte jeweils zu einer Spalte gehören‽ Danke. ☺
find
wurde ja schon erwähnt. Da muss man dann aber noch irgendwie damit umgehen das Du ja eigentlich gar nicht die Dateinamen mit *.sh haben möchtest, sondern die Verzeichnisse in denen solche Dateien liegen.
CSV und Verzeichnissnamen sind dann noch ein kleines aber lösbares Problem, denn da muss man darauf achten, dass in einem Verzeichnisnamen auch das Trennzeichen der CSV-Datei vorkommen könnte. Da muss man dann entsprechend durch quoten den Wert schützen. Dann natürlich auch darauf achten, dass das Quotezeichen im Verzeichnisnamen vorkommen kann, und das dann auch entsprechend geschützt werden muss. Und das Datensatztrennzeichen, also das Zeilenende, kann auch in Verzeichnisnamen vorkommen, und muss entsprechend geschützt werden.
Mir wäre das für ein Shellskript ja schon zu kompliziert und ich würde auf eine richtige Programmiersprache zurückgreifen. Am besten eine für die es eine Bibliothek für CSV-Dateien gibt, damit man sich da nicht mit den Details herumschlagen muss und Fehler vermeidet.