Comment rechercher dans tous les fichiers .java une simple chaîne (pas une expression régulière) dans le répertoire actuel et tous les sous-répertoires sous Mac OS X? Je veux juste imprimer une liste de noms de fichiers et de répertoires qui correspondent.
12
Réponses:
Et le toujours populaire
EDIT (par Frank Szczerba):
Si vous avez affaire à des noms de fichiers ou à des répertoires contenant des espaces, la façon la plus sûre de procéder est:
Il y a toujours plus d'une façon de le faire.
la source
mdfind
est une façon plus OSXy de le faire !La réponse UNIX traditionnelle serait celle qui a été acceptée pour cette question:
Cela fonctionnera probablement pour les fichiers Java, mais les espaces dans les noms de fichiers sont beaucoup plus courants sur Mac que dans le monde UNIX traditionnel. Lorsque les noms de fichiers avec des espaces sont transmis via le pipeline ci-dessus, xargs interprète les mots individuels comme des noms différents.
Ce que vous voulez vraiment, c'est de séparer les noms pour rendre les limites sans ambiguïté:
L'alternative consiste à laisser find exécuter grep pour vous, comme le suggère Mark, bien que cette approche soit plus lente si vous recherchez un grand nombre de fichiers (car grep est invoqué une fois par fichier plutôt qu'une fois avec la liste complète des fichiers).
la source
Utilisez le grep qui est meilleur que grep, ack :
la source
Cela utilisera en fait une expression régulière si vous le souhaitez, restez simplement à l'écart des métacaractères, ou échappez-les, et vous pouvez rechercher des chaînes.
la source
la source
Puisqu'il s'agit d'une question OSX, voici une réponse plus spécifique à OSX.
Sautez
find
et utilisez àSpotlight
partir de la ligne de commande. Beaucoup plus puissant!COMMAND LINE SPOTLIGHT - FIND MEETS GREP
la source
Essayez ceci:
la source
Vous pouvez également utiliser un programme GUI comme TextWrangler pour faire une recherche plus intuitive où les options sont dans l'interface.
la source
Si vous souhaitez ignorer la casse, remplacez -rl par -irl. (votre chaîne) peut également être une expression régulière si vous en voyez le besoin.
la source