ฉันจะแสดงจำนวนคำในหลายไฟล์ได้อย่างไร


9

สมมติว่าฉันต้องค้นหาว่ามีกี่คำในแต่ละไฟล์ที่มีคำว่า 'ทำงาน' อยู่ในนั้น

ฉันรู้ว่าการค้นหาไฟล์ที่มี 'งาน' อยู่ในนั้นจะเป็นls workอย่างไร และเพื่อหาจำนวนคำมันจะเป็นwc -w

อย่างไรก็ตามฉันลองและดูเหมือนว่าจะแสดงเพียงจำนวนไฟล์ไม่ใช่จำนวนคำที่รวมกันในทุกไฟล์ (ซึ่งฉันต้องการ):

ls work | wc -w

ดังนั้นถ้ามีไฟล์ 14 ไฟล์ที่เป็นไปตามข้อกำหนดเบื้องต้น 'งาน' มันจะแสดง 14 ไม่ใช่จำนวนคำ

คำตอบ:


17

wc -w [FILE]ไวยากรณ์ หากคุณไม่ใช้ FILE แต่ไปป์ในเอาต์พุตของls workมันจะนับเฉพาะสิ่งที่อ่านบน stdin เท่านั้น

คุณต้องไพพ์ในข้อความเอง:

cat *work* | wc -w

ทางเลือกที่คุณสามารถดำเนินการกับwc find -execแต่โปรดทราบว่าสิ่งนี้อาจแสดงผลรวม "รวม" หลายรายการเช่นเดียวกับที่findจะโทรwcหลายครั้งหากมีไฟล์จำนวนมาก

find ./ -type f -name "*work*" -exec wc -w {} +

ผมใช้คำสั่งนอกจากนี้ยังสามารถที่จะสรุปผลการนับเส้นโดยใช้find wc -l! ที่น่าตื่นตาตื่นใจ
cody.codes

3

คุณสามารถเรียกใช้wcไฟล์หลายไฟล์จากนั้นใช้เชลล์ในตัว*ซึ่งจะเพิ่มทุกไฟล์ที่ไม่ได้ซ่อนไว้ในไดเรกทอรีทำงานให้กับwcพารามิเตอร์ของ

wc -w *work*

ถ้าชื่อไดเรกทอรีที่มีworkแล้วนี้จะแสดงให้เห็นการส่งออกพร้อมกับสับ error..a จะเปลี่ยนเส้นทาง STDERR 2>/dev/null..although คุณควรจะใช้สิ่งที่ต้องการfindที่จะได้รับเฉพาะแฟ้ม ..
heemayl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.