Comme le titre l'indique, quel est le moyen le plus rapide (précis) de trouver quelles lignes de quels fichiers correspondent à une chaîne particulière.
Plus précisément, je suis à la recherche .cpp
et les .h
fichiers.
Comme le titre l'indique, quel est le moyen le plus rapide (précis) de trouver quelles lignes de quels fichiers correspondent à une chaîne particulière.
Plus précisément, je suis à la recherche .cpp
et les .h
fichiers.
Réponses:
Notepad ++ a l'option 'find in files', qui se trouve dans le menu 'Search'. Cela vous permettra de rechercher plusieurs fichiers dans un dossier (vous pouvez spécifier le dossier) et vous montrera également les numéros de ligne de chaque fichier . Vous pouvez basculer si les sous-dossiers et les dossiers cachés sont inclus dans la recherche, et cela vous permettra également de rechercher avec \ t \ n etc. et de rechercher avec des expressions régulières si vous en avez besoin.
Notepad ++ est un éditeur de programmeurs Windows (pas un IDE) et est également Open Source.
(Je me rends compte que vous avez probablement entendu parler de notepad ++, mais je le mentionne juste ici comme une option au cas où vous ne seriez pas au courant de cette fonctionnalité particulière , et pour d'autres qui tomberont sur ce fil plus tard.
À votre santé :)
L'agent Ransack fonctionne comme un charme. Téléchargez-le ici .
Sur les systèmes Unix, les gens utiliseraient très probablement grep pour cela, alors pourquoi ne pas utiliser Windows Grep?
Voici une solution Powershell:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString
Le -r
en gci
est pour récursion, et bien sûr est facultative, comme le sont les deux filtres d'extension de fichier. Un paramètre utile de Select-String
est -list
qui ne rapportera que la première instance d'une correspondance dans un fichier, au lieu de vous en donner chaque occurrence par fichier.
Vous souhaitez peut-être ouvrir instantanément chaque fichier où une correspondance est trouvée? Eh bien, la petite modification suivante à ce qui précède est très utile, selon ce que vous avez comme association de fichiers par défaut:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii
-filter "*.cpp","*.h"
accepter plusieurs extensions? Cela devrait plutôt lire-include ("*.cpp","*.hpp")
tout en faisant une localisation de certains logiciels, j'utilise DocFetcher pour rechercher les mêmes chaînes dans les fichiers précédemment traduits. Il est gratuit et open-source, mais doit d'abord créer un index. Essayez-le. :-)
Si vous êtes satisfait de la ligne de commande / avec Linux. Puis-je suggérer de chercher à installer une version de grep pour Windows?
cygwin est un moyen assez pratique pour y arriver et vous donnera un environnement Linux complet, avec shell bash et un terminal rxvt. Sinon, si vous voulez juste les outils, il y a gnuwin32 mais vous serez coincé avec l'invite Windows cmd.exe.
Microsoft a en fait sa propre version des outils Unix en téléchargement, mais ils semblaient assez lents par rapport aux ports GNU lorsque je les ai essayés. Ils vont également les supprimer avec Windows 8.
C'est ainsi que je recherche des chaînes de texte dans le registre Windows ou des fichiers sur ma machine Windows XP. Supposons que je veuille trouver la chaîne "Enterprise" dans un fichier texte sur le lecteur c:, puis écrivez la sortie dans un fichier appelé search_result.txt dans c: \ windows \ temp
Ouvrez une invite de commande puis tapez:
findstr "Entreprise" c: *. txt> c: \ windows \ temp \ search_result.txt
La chaîne que vous recherchez est sensible à la casse. "Entreprise" et "entreprise" ne trouveront pas la même chaîne.