grep n'est probablement pas l'outil que vous voulez pour cela. Il imprimera une ligne pour chaque ligne correspondante dans chaque fichier. À moins que vous ne vouliez, par exemple, exécuter des tâches 10 fois sur un fichier de 10 lignes, grep n'est pas la meilleure façon de procéder. Utiliser find pour exécuter file sur chaque fichier de l'arborescence, puis parcourir cela pour "CRLF" vous donnera une ligne de sortie pour chaque fichier qui a des fins de ligne de style dos :
find . -not -type d -exec file "{}" ";" | grep CRLF vous obtiendrez quelque chose comme :
./1/dos1.txt: ASCII text, with CRLF line terminators
./2/dos2.txt: ASCII text, with CRLF line terminators
./dos.txt: ASCII text, with CRLF line terminators Utilisez Ctrl +V , Ctrl +M pour entrer un caractère de retour chariot littéral dans votre chaîne grep. Donc :
grep -IUr --color "^M"
fonctionnera - si le ^M il y a un CR littéral que vous saisissez comme je l'ai suggéré.
Si vous voulez la liste des fichiers, vous voulez ajouter le -l également.
Explication
-Iignorer les fichiers binaires-Uempêche grep de supprimer les caractères CR. Par défaut, il le fait s'il décide qu'il s'agit d'un fichier texte.-rlire tous les fichiers sous chaque répertoire de manière récursive.
Utilisation de RipGrep :
rg -l \r
-l, --files-with-matches
Only print the paths with at least one match.
https://github.com/BurntSushi/ripgrep