Comment rechercher (récursivement) le contenu des fichiers tous dans Windows 7? J'utilise le content:xxx
, dans la commande Search settings
dans l'Explorateur Windows, pour rechercher xxx
dans cet exemple. Cela ne fonctionne pas:
Comme exemple de la façon dont cette recherche est interrompue, je vois un org.Eclipse.wst.common.component
fichier avec le texte que je recherche et Windows 7 ne le renvoie pas dans les résultats. Je suppose que cela ne fait que rechercher des types de fichiers texte connus. Comment puis-je faire rechercher tous les fichiers? J'ai besoin de trouver tout ce que je cherche.
P.S. S'il existe une solution DOS, je l'accepterai également. Peut-être un fichier batch utilisant dir /s /b
et findstr
pourraient être construits.
EDIT: A noté mon besoin d'une recherche récursive.
Voici ma solution à trois fichiers DOS, mais je suis toujours à la recherche d'une bonne solution Windows 7 si quelqu'un en a une:
@ECHO off
FOR /r %%a IN (*.*) DO CALL process.bat %%a
Recherche tous les fichiers de manière récursive et exécute process.bat
sur chacun.
@ECHO Off
ECHO "%1" >> output.txt
TYPE "%1" | FINDSTR /i "search_string_here" >> output.txt
Imprime le nom de chaque fichier, entre guillemets car certains fichiers vont casser le code de fichier batch sans, puis trouve la chaîne de recherche, search_string_here
, et imprime la ligne entière dans laquelle se trouve la chaîne de recherche.
Contient la sortie, formatée comme suit, en recherchant search_string_here
dans mon project_name
Java stocké dans D:\project_name\
, affichant tous les fichiers recherchés ainsi que les résultats s'il y en a:
"D:\project_name\.classpath"
"D:\project_name\.project"
<name>search_string_here</name>
"D:\project_name\content_search_all_files.bat"
"D:\project_name\output.txt"
<name>search_string_here</name>
"D:\project_name\pom.xml"
...
Ci-dessus, vous pouvez voir que search_string_here
a été trouvé, la ligne complète étant <name>search_string_here</name>
, dans D:\project_name\.project
fichier ... entre autres résultats.
Encore une fois, je suis toujours à la recherche d'une bonne solution Windows 7 si quelqu'un en a une.
Apparemment, FINDSTR <grep, comme si vous ne le saviez pas. Voici un article qui plonge dans l'erreur dans FINDSTR qui ne se reproduit pas lorsque la même entrée est utilisée dans un fichier différent:
De toute évidence, "la ligne est trop longue" est un message fourre-tout pour un certain nombre d'erreurs différentes. FINDSTR a quelques problèmes. Il y a quelque temps, j'ai dit que FINDSTR était légèrement utile. Après aujourd'hui, je dirais que c'est encore moins utile que je ne le pensais à l'époque. - http://blog.mischel.com/2008/10/14/copying-large-files-on-windows/
"user3245549" a raison:
Toutes les réponses ci-dessus avec "pour les boucles" et les fichiers de chauve-souris imbriqués sont des jumbo mumbo. Tout ce dont vous avez besoin est d'utiliser simplement "findstr" - exemple:
C:\temp> findstr /S /C:"/work" * | more <-- this will find the string "/work" in any file
ou
C:\temp> findstr /S /C:"/work" "*.*" | more
ou
C:\temp> findstr /S /C:"/work" * > results.txt
ou
C:\temp> findstr /S /C:"/work" "*.*" > results.txt
REMARQUE: Vous pouvez laisser de côté les "guillemets doubles" autour des astérisques - je les mets simplement parce que l'éditeur ici sur Stackoverflow supprimait les astérisques de chaque côté de la période. NOTEZ AUSSI: Pour autant que je sache, vous avez toujours besoin des guillemets autour du "texte de chaîne" que vous recherchez.
Si vous recherchez une solution basée sur une interface graphique dont vous n'avez pas à vous souvenir de la syntaxe, essayez Notepad ++. Il y a un menu Rechercher qui vous permet de rechercher des fichiers dans un répertoire (trouver dans les fichiers), de le limiter à certaines extensions (filtre) et de regarder dans les sous-dossiers, puis vous cliquez simplement sur l'élément dans la liste et il ouvre ce fichier pour Éditer.
Utilisez la commande findstr à partir d'une fenêtre d'invite de commandes.
/ s vous donne une recherche récursive
/ i ignore le cas
Cela peut être fait via l'invite de commande, bien que la syntaxe soit assez verbeuse
for /r %a in (\*.*) do find "search_text" %a
Cela fonctionne maintenant dans Windows 7 (point supplémentaire supprimé)