J'exécute un find . -name pattern
pour trouver des fichiers, et j'aimerais obtenir avec élégance le nombre total de lignes dans ces fichiers.
Comment puis-je y parvenir?
Si votre version de wc
et prend en find
charge les options nécessaires:
find . -name pattern -print0 | wc -l --files0-from=-
ce qui vous donnera un nombre de fichiers par fichier ainsi qu'un total. Si vous ne voulez que le total:
find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1
Une autre option pour les versions find
qui le supportent:
find . -name pattern -exec cat {} + | wc -l
$ find . -name '*.txt' -exec cat '{}' \; | wc -l
Prend chaque fichier et le cat
s, puis dirige tout cela à travers le wc
mode de comptage de lignes.
Ou, nom de fichier étrange [non testé] sûr:
$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
Malheureusement, la sortie de:
find . -iname "yourpattern" -exec cat '{}' \; |wc -l
insère des lignes supplémentaires. Pour obtenir un nombre de lignes fiable, vous devez:
find . -name "yourpattern" -print0 | xargs -0 wc -l
De cette façon, vous gérez les espaces correctement, obtenez un nombre de lignes pour chaque fichier et le nombre total de lignes, plus rapidement et avec style !!!
Un autre moyen facile de trouver non. lignes dans un fichier:
Exemple:
la source
Non testé, mais que diriez-vous de quelque chose comme:
la source
fonctionnera efficacement.
la source