Bagaimana cara mendaftar jumlah kata dalam banyak file?

9

Katakanlah saya perlu mencari tahu berapa banyak kata dalam setiap file yang memiliki kata 'bekerja' di dalamnya.

Saya tahu bahwa untuk menemukan file dengan 'berfungsi' di dalamnya, itu akan menjadi ls work. Dan untuk mengetahui jumlah kata itu akan menjadiwc -w

Namun saya mencoba ini dan sepertinya hanya menampilkan jumlah file, bukan jumlah kata yang digabungkan dalam semua file (yang saya butuhkan):

ls work | wc -w

Jadi katakan jika ada 14 file yang mengikuti prereq 'work', itu akan menampilkan 14, bukan jumlah kata.

John Stacen
sumber

Jawaban:

17

Sintaksnya adalah wc -w [FILE]. Jika Anda tidak menggunakan FILE tetapi pipa di output ls workhanya akan menghitung apa yang akan dibaca di stdin.

Anda perlu mem-pipe dalam teks itu sendiri:

cat *work* | wc -w

Alternatif Anda bisa menjalankan wcdengan find -exec. Namun ketahuilah bahwa ini dapat menampilkan beberapa jumlah "total" sebagaimana findakan dipanggil wcbeberapa kali jika ada banyak file.

find ./ -type f -name "*work*" -exec wc -w {} +
Germar
sumber
Saya menggunakan findperintah untuk juga dapat meringkas jumlah baris dengan menggunakan wc -l. Luar biasa!
cody.codes
3

Anda dapat menjalankan wcdengan banyak file dan kemudian menggunakan built-in shell *yang menambahkan setiap file yang tidak tersembunyi di direktori kerja ke wcparameter.

wc -w *work*
mmrmartin
sumber
Jika nama direktori berisi workmaka ini akan menampilkan output bersama dengan kesalahan .. peretasan akan mengarahkan ulang STDERR 2>/dev/null.. meskipun Anda harus menggunakan sesuatu seperti finduntuk mendapatkan hanya file ..
heemayl