J'utilise la commande suivante pour compter les lignes de texte dans les fichiers JAVA:
find . -name '*.java' | xargs wc -l
Comment puis-je modifier les find
paramètres de commande pour correspondre à plusieurs extensions de fichier? Par exemple, j'aimerais utiliser l'opération ci-dessus pour les fichiers CPP, C et H.
find
commande, car c'est là que vous recherchez les fichiers correspondants.find -print0 | xargs -0
construction ou encore mieux et plus simple:find . -name '*.cpp' -o -name '*.c' -o -name '*.h' -exec wc -l {} +
. Cela évitera tout problème de nom de fichier (espaces vides, nouvelles lignes, etc.) et est (très) une bonne coutume.Réponses:
Utilisez l'
-o
option pour un OU. Par exemple, ce serait la liste.cpp
,.c
et les.h
fichiers:la source
*
n'est plus nécessaire de s'échapper s'il est formaté en tant que code. Totalement ignoré cela. :)Vous devrez utiliser l'option -o. Par exemple, l'instruction ci-dessous trouve tous les fichiers png, jpg et gif dans un dossier.
J'utilise l'option -iname pour que la correspondance soit insensible à la casse.
la source
Le «-ou» indique que je recherche l'un ou les deux ensembles.
J'ai récemment écrit un petit guide sur l'utilisation de find avec les opérateurs booléens ici: http://jamesfishwick.com/2012/linux-find-and-boolean-operators
la source
Bien que toutes les réponses soient plus ou moins les mêmes, je ne les trouve pas lisibles avec plusieurs opérateurs de nom et booléens entre les deux.
Je pense que cela peut être une solution plus élégante:
Brisons ça
find .
trouve tous les fichiers de manière récursive dans le chemin actuel (changez de chemin si vous en avez besoin)-type f
restreint la recherche uniquement aux fichiers (pas trop de gain de vitesse, mais quand même ...)| grep -E
J'ai utilisé cela pour obtenir la reconnaissance grep ou l'|
opérateur ( ) dans Mac OS X qui utilise FreeBSD grep , GNU grep n'en a pas besoin (vérifiez votreman
fichier)."\.java$|\.cpp$|\.c$"
expression régulière qui inclut les fichiers dont les extrémités nom avec.java
,.cpp
et.c
(les add dont vous avez besoin)Vous pouvez ensuite diriger la liste résultante pour un traitement ultérieur, par exemple
Cet exemple supprime la
CRLF
fin de ligne DOS / Windows pour OS X / LinuxLF
(il s'agit également de lased
syntaxe OS X , vérifiez les spécificités de votre version).la source
Utilisation
Explication
find
récursivité.-o
représente-or
. Donc, ci-dessus signifie rechercher ce caractère générique OU celui-ci. Si vous n'avez qu'un seul motif, alors pas besoin-o
.la source