grep mungkin bukan alat yang Anda inginkan untuk ini. Ini akan mencetak baris untuk setiap baris yang cocok di setiap file. Kecuali jika Anda ingin, katakanlah, menjalankan todos 10 kali pada file 10 baris, grep bukanlah cara terbaik untuk melakukannya. Menggunakan find untuk menjalankan file pada setiap file di pohon kemudian mempelajarinya untuk "CRLF" akan memberi Anda satu baris output untuk setiap file yang memiliki akhiran baris gaya dos:
find . -not -type d -exec file "{}" ";" | grep CRLF
akan memberi Anda sesuatu seperti:
./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
Gunakan Ctrl +V , Ctrl +M untuk memasukkan karakter Carriage Return literal ke dalam string grep Anda. Jadi:
grep -IUr --color "^M"
akan bekerja - jika ^M
ada CR literal yang Anda masukkan seperti yang saya sarankan.
Jika Anda menginginkan daftar file, Anda ingin menambahkan -l
opsi juga.
Penjelasan
-I
abaikan file biner-U
mencegah grep menghapus karakter CR. Secara default ia melakukan ini jika memutuskan itu adalah file teks.-r
baca semua file di bawah setiap direktori secara rekursif.
Menggunakan RipGrep:
rg -l \r
-l, --files-with-matches
Only print the paths with at least one match.
https://github.com/BurntSushi/ripgrep