Bagaimana saya bisa menghitung jumlah file (dalam direktori) yang berisi string yang diberikan sebagai input di bash / sh?
Bagaimana saya bisa menghitung jumlah file (dalam direktori) yang berisi string yang diberikan sebagai input di bash / sh?
Jawaban:
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 -lJika Anda tidak ingin pencarian rekursif, Anda dapat menggunakan find dengan opsi maxdepth: find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -lPerhatikan bahwa opsi kedua ini lebih lambat dari grep.
grepParameter s -lhanya akan menampilkan nama file yang cocok $PATTERN, wcdapat menghitungnya sesudahnya.
grep -l "$PATTERN" * | wc -l
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
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.
find . ! -name . -prune -type f(jangan lewatkan backticks). Perintah ini hanya mencantumkan file dalam folder.
Ini berfungsi di Bash dengan nama file apa pun :
grep -lZ "$pattern" * | tr -cd '\000' | wc -c
Penjelasan:
grep's -Zpilihan 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.