Dapatkan total baris file di beberapa subdirektori dalam satu direktori (tidak termasuk garis hitam) [duplikat]

Saya ingin memiliki skrip yang menelusuri setiap file dalam direktori (yang mencakup sub direktori) dan mengembalikan kepada saya jumlah total baris di semua file tidak termasuk baris kosong dan tidak termasuk folder/file yang memiliki kata kunci (log).

Saat ini saya memiliki sebaris kode yang mengembalikan jumlah total baris (termasuk baris kosong) dalam file direktori tunggal 'file'

cat /home/user/files/* | wc -l

Apakah ada cara untuk menerapkannya sehingga saya dapat memanggil kode yang dapat dibaca, misalnya:

- /home/user/files/*
- /home/user/files/files2/*
- /home/user/files/files2/files3/*

sekumpulan direktori (nomor tidak diketahui) dan kembalikan kepada saya jumlah total baris semua file (tidak termasuk baris kosong) (dan tidak termasuk folder/file yang memiliki kata kunci (log)) ditemukan.

Saat ini saya menggunakan BASH untuk skrip tetapi jika ada solusi dengan python, saya dengan senang hati menggunakannya.


person carol Alex    schedule 15.09.2016    source sumber
comment
@ juanpa.arrivillaga Saya telah memperbarui sedikit pertanyaan saya, saya memerlukan jumlah total baris tidak termasuk baris kosong.   -  person carol Alex    schedule 15.09.2016


Jawaban (1)


Coba temukan semua file di direktori secara rekursif (tanda -type f untuk ditemukan). Berhati-hatilah karena ini akan mencetak file biner juga, seperti halnya kode Anda saat ini.

find /home/user/files/ -type f -exec cat {} \; | wc -l

Sunting: solusi --files-from yang diberikan di Gunakan wc aktif semua subdirektori untuk menghitung jumlah baris lebih efisien, seperti yang ditautkan dalam komentar pertanyaan

person jedifans    schedule 15.09.2016
comment
terima kasih atas hasil edit Anda. saya baru saja akan menanyakan perbedaan antara solusi Anda dan solusi yang diberikan di stackoverflow.com/questions/13727917/ - person carol Alex; 15.09.2016
comment
maaf karena tidak menerima jawaban Anda, saya telah memperbarui pertanyaan saya sedikit karena saya lupa menambahkannya sebelumnya - saya memerlukannya untuk mengembalikan jumlah total baris (tidak termasuk baris kosong) - person carol Alex; 15.09.2016
comment
Tidak ada masalah. Apakah itu file kode yang Anda hitung? Jika demikian, ada beberapa baris alat analisis kode (loc) di luar sana untuk digunakan pada server integrasi berkelanjutan. - person jedifans; 15.09.2016
comment
Ya! saya pada dasarnya mencoba menghitung kode. aku akan melihatnya. apakah Anda juga tahu bagaimana saya bisa menghindari penghitungan folder/file tertentu dengan kata kunci di dalamnya? (yaitu, 'log') - person carol Alex; 15.09.2016
comment
Tergantung pada alatnya. Ada yang memberikan opsi untuk dikecualikan, ada pula yang tidak. Jika memang demikian, pra-filter dengan find/home/user/files/ -type f ! -path '*/log/*' - person jedifans; 15.09.2016