j'ai eu de la chance avec
find . -name "*.php" -exec grep -Pl "\r" {} \;
Que diriez-vous :
find . -name "*.php" | xargs file | grep "CRLF"
Je ne pense pas qu'il soit fiable d'essayer d'utiliser ^M
pour essayer de trouver les fichiers.
Vous ne savez pas exactement ce que vous entendez par "non fiable", mais vous pouvez essayer :
find . -name '*.php' -print0 | xargs -0 grep -l '^M$'
Cela utilise le plus atrocious-filenames-with-spaces-in-them-friendly options et ne trouve que les retours chariot immédiatement avant la fin de la ligne.
Gardez à l'esprit que le ^M
est un seul CTRL M caractère, pas deux caractères.
Et aussi qu'il listera les fichiers où même un La ligne est en mode DOS, ce qui est probablement ce que vous voulez de toute façon, car il s'agirait de fichiers UNIX mutilés par un éditeur non UNIX.
D'après votre mise à jour, vim signale vos fichiers au format DOS :
Si vim est en le signalant au format DOS, puis chaque la ligne se termine par CRLF
. C'est ainsi que fonctionne vim. Si même un la ligne n'a pas CR
, alors il est considéré comme le format UNIX et le ^M
les caractères sont visibles dans le tampon. Si tout est au format DOS, le ^M
les caractères ne sont pas affichés :
Vim recherchera à la fois les fins de ligne dos et unix, mais Vim a une préférence intégrée pour le format unix.
- Si toutes les lignes du fichier se terminent par CRLF, le format de fichier dos sera appliqué, ce qui signifie que chaque CRLF est supprimé lors de la lecture des lignes dans un tampon, et l'option 'ff' du tampon sera dos.
- Si une ou plusieurs lignes se terminent par LF uniquement, le format de fichier unix sera appliqué, ce qui signifie que chaque LF est supprimé (mais chaque CR sera présent dans le tampon, et s'affichera sous la forme ^M), et le tampon 'ff' l'option sera unix.
Si vous vraiment voulez savoir ce qu'il y a dans le fichier, ne comptez pas sur un outil trop intelligent comme vim :-)
Utiliser :
od -xcb input_file_name | less
et vérifiez vous-même les fins de ligne.