GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Anda mencari file yang berisi akhiran baris DOS (CRLF) dengan grep di Linux?

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


Linux
  1. Cari File dengan Cepat di Linux Dengan Perintah Cari

  2. Cara Audit untuk Modifikasi file dan Eksekusi File di Linux

  3. Bagaimana saya bisa mencari pola multiline dalam sebuah file?

  1. Cara menemukan file format dos di sistem file linux

  2. Bagaimana menemukan file teks yang tidak mengandung teks di Linux?

  3. Bagaimana cara menemukan semua file yang berisi teks tertentu di Linux?

  1. Cara Menambahkan Nomor Baris Ke File Teks Di Linux

  2. Cara mencari halaman manual Linux (mis. Dengan grep)

  3. Bagaimana menemukan file yang berisi dua string bersama di Linux?