Bagaimana saya bisa menghitung jumlah file (dalam direktori) yang berisi string yang diberikan sebagai input di bash / sh?
19
grep -l "string" * | wc -l
akan mencari "string" di isi semua file di direktori kerja dan memberi tahu Anda berapa banyak yang cocok.
grep -lr "string" directory | wc -l
Jika Anda tidak ingin pencarian rekursif, Anda dapat menggunakan find dengan opsi maxdepth:find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -l
Perhatikan bahwa opsi kedua ini lebih lambat dari grep.grep
Parameter s-l
hanya akan menampilkan nama file yang cocok$PATTERN
,wc
dapat menghitungnya sesudahnya.sumber
Klarifikasi: Ini mencari jumlah file yang memiliki "pattern_to_look_for" dalam isinya dan tidak dalam nama file mereka (seperti jawaban Wag). Dari pertanyaan Anda, sulit untuk mengatakan apa yang Anda cari.
sumber
find . ! -name . -prune -type f
(jangan lewatkan backticks). Perintah ini hanya mencantumkan file dalam folder.Ini berfungsi di Bash dengan nama file apa pun :
Penjelasan:
grep
's-Z
pilihan mencetak setiap hasil dengan pemisah ␀-byte. Karakter ini tidak dapat menjadi bagian dari nama file, jadi kita bisa menghitung jumlah pemisah untuk mendapatkan jumlah file.tr
.wc
.sumber