ฉันกำลังใช้ a find . -name pattern
เพื่อค้นหาไฟล์บางไฟล์และฉันต้องการรับจำนวนบรรทัดทั้งหมดในไฟล์เหล่านี้
ฉันจะบรรลุสิ่งนั้นได้อย่างไร
ฉันกำลังใช้ a find . -name pattern
เพื่อค้นหาไฟล์บางไฟล์และฉันต้องการรับจำนวนบรรทัดทั้งหมดในไฟล์เหล่านี้
ฉันจะบรรลุสิ่งนั้นได้อย่างไร
คำตอบ:
หากเวอร์ชันของคุณwc
และfind
สนับสนุนตัวเลือกที่จำเป็น:
find . -name pattern -print0 | wc -l --files0-from=-
ซึ่งจะให้การนับต่อไฟล์รวมกับคุณ ถ้าคุณต้องการเพียงผลรวม:
find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1
ตัวเลือกอื่นสำหรับรุ่นfind
ที่รองรับ:
find . -name pattern -exec cat {} + | wc -l
$ find . -name '*.txt' -exec cat '{}' \; | wc -l
ใช้เวลาแต่ละไฟล์และcat
จากนั้นไปป์ทั้งหมดที่ผ่านการwc
ตั้งค่าโหมดการนับบรรทัด
หรือชื่อไฟล์แปลก ๆ ที่ยังไม่ทดลองทดสอบ:
$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
น่าเสียดายที่ผลลัพธ์ของ:
find . -iname "yourpattern" -exec cat '{}' \; |wc -l
แทรกบรรทัดพิเศษ ในการรับจำนวนเส้นที่เชื่อถือได้คุณควรทำ:
find . -name "yourpattern" -print0 | xargs -0 wc -l
วิธีนี้คุณจัดการช่องว่างอย่างถูกต้องรับจำนวนบรรทัดสำหรับแต่ละไฟล์และจำนวนบรรทัดทั้งหมดเร็วขึ้นและมีสไตล์ !!!
อีกวิธีที่ง่ายต่อการค้นหาไม่ บรรทัดในไฟล์:
wc -l filename
ตัวอย่าง:
wc -l myfile.txt
ยังไม่ทดลอง แต่เกี่ยวกับสิ่งที่ชอบ:
cat `find . -name "searchterm" -print` | wc -l
wc -l `find -name filename`
จะทำงานอย่างมีประสิทธิภาพ