Comment trouver dos format de fichiers dans un système de fichiers linux
Je voudrais savoir lequel de mes fichiers dans un répertoire dos des fichiers texte (par opposition à unix les fichiers texte).
Ce que j'ai essayé:
find . -name "*.php" | xargs grep ^M -l
Ce n'est pas de me donner des résultats fiables... donc je suis à la recherche d'une meilleure alternative.
Des suggestions, des idées?
Grâce
Clarification
En plus de ce que j'ai dit ci-dessus, le problème est que j'ai un tas de fichiers dos avec n ^M de caractères (d'où ma remarque à propos de la fiabilité).
La façon dont j'ai actuellement à déterminer si un fichier est de dos ou pas, c'est par le biais de Vim, au fond, il dit:
"filename.php" [dos] [noeol]
... Comment exactement est-il pas fiable?
Mais ce n'est pas une propriété du fichier, c'est ce que contient le fichier.
Si elle n'a pas de CRs alors ce n'est pas un déni de service d'un format de fichier.
Puis il a CRs.
vim va détecter un fichier sous DOS si tous ligne a CRLF sinon c'est UNIX. Je ne suis pas sûr de savoir pourquoi vous pensez que ces fichiers ne sont pas réellement format DOS, à moins que c'est le manque
Mais ce n'est pas une propriété du fichier, c'est ce que contient le fichier.
Si elle n'a pas de CRs alors ce n'est pas un déni de service d'un format de fichier.
Puis il a CRs.
vim va détecter un fichier sous DOS si tous ligne a CRLF sinon c'est UNIX. Je ne suis pas sûr de savoir pourquoi vous pensez que ces fichiers ne sont pas réellement format DOS, à moins que c'est le manque
^M
caractères dans vim d'affichage, ce qui n'est pas un indicateur fiable. Voir ma réponse de mise à jour pour la raison, et l'outil que vous devez utiliser pour trouver pour certains.OriginalL'auteur denormalizer | 2011-01-18
Vous devez vous connecter pour publier un commentaire.
Pas sûr de ce que vous entendez exactement par "pas fiable", mais vous pouvez essayer:
Il utilise le plus atroce-les noms de fichiers avec des espaces-dans-leur-friendly options et ne trouve que des retours chariot immédiatement avant la fin de la ligne.
Gardez à l'esprit que la
^M
est un CTRLM caractère, pas deux caractères.Et aussi que ça va liste des fichiers où même un ligne est en mode DOS, ce qui est probablement ce que vous voulez de toute façon puisque celles-ci ont été des fichiers UNIX mutilé par un non-UNIX éditeur.
Basée sur la mise à jour que vim est de la déclaration de vos fichiers en tant que format de DOS:
Si vim est signaler comme format ms-DOS, puis chaque ligne se termine avec
CRLF
. C'est la façon dont vim fonctionne. Même si un ligne n'ont pasCR
, alors il est considéré comme format UNIX et le^M
caractères sont visibles dans la mémoire tampon. Si c'est tous les format de DOS, la^M
caractères ne sont pas affichés:Si vous vraiment voulez savoir ce qui est dans le fichier, ne comptez pas sur un trop-outil intelligent comme vim 🙂
Utilisation:
et de vérifier les fins de ligne vous-même.
OriginalL'auteur paxdiablo
Comment sur:
Je ne pense pas que c'est fiable à essayer et à utiliser
^M
de l'essayer et de trouver les fichiers.pour moi, cette réponse a fonctionné alors que l'on a accepté la réponse n'a pas de travail!
OriginalL'auteur bvpb
C'est un peu comme votre solution originale; par conséquent, il est peut-être plus facile à mémoriser pour vous:
Processus de pensée:
Dans VIM, pour supprimer les ^M type:
Où ^ est votre touche Ctrl et M est la touche ENTRÉE. Mais je n'ai jamais pu rappeler les touches à taper pour imprimer cette séquence, j'ai toujours enlevés à l'aide de:
Donc ma déduction est que le \r et ^M sont équivalentes, les premiers étant plus facile à retenir pour type.
OriginalL'auteur jmort253
j'ai eu de la chance avec
OriginalL'auteur firebus
GNU trouver
Je ne sais pas ce que vous voulez faire après vous trouvez ces DOS php les fichiers, mais si vous voulez les convertir en format unix, puis
suffira. Il n'y a pas besoin de contrôler en particulier s'ils sont DOS des fichiers ou pas.
OriginalL'auteur ghostdog74
Si vous préférez vim vous dire quels sont les fichiers dans ce format, vous pouvez utiliser le script suivant:
votre vim doit être compilé avec python (python est utilisé pour faire une boucle sur tous les fichiers dans le dossier, il y a probablement un moyen plus facile de le faire, mais je ne sais pas vraiment....
OriginalL'auteur skeept