findstr ou grep qui détecte automatiquement chararacter encodage (UTF-16)
Je veux faire ceci:
findstr /s /c:some-symbol *
ou la commande grep équivalent
grep -R some-symbol *
mais j'ai besoin de l'utilitaire détecte automatiquement les fichiers encodés en UTF-16 (et amis) et de recherche de façon appropriée. Mes fichiers ont même l'octet de commande marque FFEE en eux, donc je ne suis même pas à la recherche pour héroïques de la détection automatique.
Des suggestions?
Je fais référence à Windows Vista et XP.
Sont certains de vos fichiers en UTF-16 et certains en ASCII, ou quoi?
Oui, certains ASCII, certains UTF-16.
Oui, certains ASCII, certains UTF-16.
OriginalL'auteur David Martin | 2009-01-02
Vous devez vous connecter pour publier un commentaire.
Merci pour les suggestions. Je faisais allusion à Windows Vista et XP.
J'ai aussi découvert cette solution de contournement, à l'aide de gratuit Sysinternals
strings.exe
:Strings.exe
extraits de toutes les chaînes qu'il trouve (à partir des binaires, mais qui fonctionne bien avec des fichiers texte trop) et ajoute chaque résultat avec un nom de fichier et le côlon, donc en tenir compte dans la regexp (ou de l'utilisation de couper ou d'une autre étape dans le pipeline). Le-s
fait faire un circuit d'extraction et de-b
juste supprime la bannière de message.Fin de compte, je suis toujours un peu surpris que le fleuron de la recherche utilitaires Gnu
grep
etfindstr
ne gère pas l'Unicode des codages de caractères en mode natif.Peut-être pas si grand pour l'extraction de l'ensemble de la ligne, mais parfait pour essayer de trouver tous les fichiers contenant une chaîne de caractères (que je suis en train de faire). Merci.
OriginalL'auteur David Martin
Sur Windows, vous pouvez également utiliser find.exe.
Le seul problème est que cela permet d'imprimer les noms de fichiers, suivi par matchs. Vous pouvez les filtrer par tuyauterie à findstr
OriginalL'auteur vent
peut être remplacé par le suivant de codage de caractères courant de commande:
OriginalL'auteur Shameer
Une solution de contournement est de convertir votre UTF-16 ASCII ou ANSI
Ensuite, vous pouvez utiliser FINDSTR.
OriginalL'auteur PollusB
Dans les versions ultérieures de Windows, UTF-16 est pris en charge hors de la boîte. Si pas, essayez de changer de page de codes active par
chcp
commande.Dans mon cas, lors de l'utilisation de
findstr
seul n'était pas pour de l'UTF-16 fichiers, cependant, il a travaillé avectype
:OriginalL'auteur kenorb
Selon cette article du blog par Damon Cortesi grep ne fonctionne pas avec UTF-16 fichiers, que vous l'avez trouvé. Toutefois, il présente ce travail autour de:
C'est évidemment pour Unix, pas sûr de ce que l'équivalent sur Windows serait. L'auteur de cet article dispose en outre d'un shell-script ci-dessus que vous pouvez trouver sur github ici.
Cela ne grep fichiers UTF-16. Vous pouvez également grep vos fichiers ASCII de la voie normale.
OriginalL'auteur Mark A. Nicolosi
Vous n'avez pas dit quelle plate-forme que vous voulez faire.
Sur Windows, vous pouvez utiliser PowerGREP, qui détecte automatiquement les fichiers Unicode qui commencent par une marque d'ordre d'octet. (Il existe également une option d'auto-détecter les fichiers sans BOM. L'auto-détection est très fiable pour l'UTF-8, mais limitée pour l'UTF-16.)
OriginalL'auteur Jan Goyvaerts