GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce qui pourrait amener la commande file sous Linux à signaler un fichier texte en tant que données binaires ?

Vim essaie très fort de donner un sens à tout ce que vous lui lancez sans se plaindre. Cela en fait un outil relativement médiocre à utiliser pour diagnostiquer file de sortie.

L'avis "[converti]" de Vim indique qu'il y avait quelque chose dans le fichier que vim ne s'attendrait pas à voir dans l'encodage de texte suggéré par vos paramètres régionaux (LANG, etc.).

D'autres ont déjà suggéré

  • cat -v
  • xxd

Vous pouvez essayer de rechercher des caractères non ASCII.

  • grep -P '[\x7f-\xff]' filename

L'autre possibilité est des fins de ligne non standard pour la plate-forme (c'est-à-dire CRLF ou CR) mais je m'attendrais à file pour faire face à cela et signaler "fichier texte DOS" ou similaire.


Si vous exécutez file -D filename , file affiche des informations de débogage, y compris les tests qu'il effectue. Vers la fin, il montrera quel test a réussi à déterminer le type de fichier.

Pour un fichier texte normal, cela ressemble à ceci :

[31> 0 regex,=^package[ \t]+[0-9A-Za-z_:]+ *;,""]
1 == 0 = 0
ascmagic 1
filename.txt: ISO-8859 text, with CRLF line terminators

Cela vous dira ce qu'il a trouvé pour déterminer qu'il s'agit de ce type mime.


J'ai trouvé le problème en utilisant la recherche binaire pour localiser les lignes problématiques.

head -n {1/2 line count} file.cpp > a.txt
tail -n {1/2 line count} file.cpp > b.txt

Exécution de file contre chaque moitié, et en répétant le processus, m'a aidé à localiser la ligne incriminée. J'ai trouvé un contrôle +P (^P ) caractère intégré dedans. Le retirer a résolu le problème. J'écrirai moi-même un script Perl pour rechercher ces caractères (et d'autres étendus) à l'avenir.

Un grand merci à tous ceux qui ont fourni une réponse pour tous les conseils !


Linux
  1. Exemples essentiels de la commande File sous Linux

  2. 9 exemples utiles de la commande Split sous Linux

  3. Créer des fichiers en utilisant la ligne de commande sous Linux

  4. Quel est le but du fichier .bashrc sous Linux

  5. Quelle est la commande pour copier, lire et supprimer un fichier sous Linux

Qu'est-ce que la commande Linux Watch + Exemples

Afficher le contenu d'un fichier dans la ligne de commande Linux

Comment ajouter du texte au début du fichier sous Linux

Qu'est-ce que la commande kill sous Linux ?

3 façons de créer rapidement un fichier texte via le terminal Linux

quelle est la commande la plus fiable pour trouver la taille réelle d'un fichier linux