comment utiliser le système unix & # 8220; find & # 8221; commande pour trouver tous les fichiers cpp et h?

StackOverflow https://stackoverflow.com/questions/277999

  •  07-07-2019
  •  | 
  •  

Question

Je sais que pour trouver tous les fichiers h dont j'ai besoin: trouver . -name " *. h " mais comment trouver tous les fichiers h AND cpp?

Était-ce utile?

La solution

find . -name \*.h -print -o -name \*.cpp -print

ou

find . \( -name \*.h -o -name \*.cpp \) -print

Autres conseils

find -name "*.h" -or -name "*.cpp"

(modifié pour protéger les astérisques qui ont été interprétés comme un formatage)

Paul Tomblin a déjà fourni une excellente réponse, mais je pensais avoir constaté une tendance dans ce que vous faisiez.

Il est probable que vous utilisiez find pour générer une liste de fichiers à traiter avec grep un jour. Pour cette tâche, il existe un outil beaucoup plus convivial, Ack

Fonctionne sur tout système prenant en charge perl, et la recherche de tous les fichiers C ++ associés dans un répertoire de manière récursive pour une chaîne donnée est aussi simple que

.
ack "int\s+foo" --cpp 

"- cpp" correspond par défaut à .cpp .cc .cxx .m .hpp .hh .h .hxx fichiers

(Il ignore également les répertoires du référentiel par défaut, il ne correspond donc pas aux fichiers qui ressemblent à des fichiers.)

Une méthode simple et claire pour le faire avec find est la suivante:

find . -regex '.*\.\(cpp\|h\)'

À partir de la page de manuel de -regex : "Il s'agit d'une correspondance sur le chemin d'accès complet, pas d'une recherche." D’où la nécessité de préfixer . * pour faire correspondre le début du chemin ./ dir1 / dir2 /... avant le nom du fichier.

find . -regex ".*\.[cChH]\(pp\)?" -print

Cela a bien fonctionné pour moi dans cygwin.

Vous pouvez utiliser find dans cette forme abrégée:

find \( -name '*.cpp' -o -name '*.h' \) -print

-print peut être omis. Utiliser -o juste entre les expressions est particulièrement utile lorsque vous souhaitez rechercher plusieurs types de fichiers et effectuer le même travail (calculons md5sum).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top