มีกี่บรรทัดในแต่ละไฟล์
wc
ฉันเชื่อว่าใช้มา แต่เดิมสำหรับการนับจำนวนคำ แต่สามารถใช้เส้นคำตัวอักษรไบต์และความยาวบรรทัดที่ยาวที่สุดได้ -l
ตัวเลือกที่จะบอกว่ามันสายนับ
wc -l <filename>
จะส่งออกจำนวนบรรทัดใน:
$ wc -l /dir/file.txt
32724 /dir/file.txt
คุณยังสามารถไพพ์ข้อมูลด้วยwc
เช่นกัน:
$ cat /dir/file.txt | wc -l
32724
$ curl google.com --silent | wc -l
63
มีกี่บรรทัดในไดเรกทอรี
ลอง:
find . -name '*.pl' | xargs wc -l
อีกหนึ่งซับ:
( find ./ -name '*.pl' -print0 | xargs -0 cat ) | wc -l
BTW wc
คำสั่งนับรหัสบรรทัดใหม่ไม่ใช่บรรทัด เมื่อบรรทัดสุดท้ายในไฟล์ไม่ได้ลงท้ายด้วยรหัสบรรทัดใหม่สิ่งนี้จะไม่ถูกนับ
คุณอาจใช้ grep -c ^ ตัวอย่างเต็มรูปแบบ:
#this example prints line count for all found files
total=0
find /path -type f -name "*.php" | while read FILE; do
#you see use grep instead wc ! for properly counting
count=$(grep -c ^ < "$FILE")
echo "$FILE has $count lines"
let total=total+count #in bash, you can convert this for another shell
done
echo TOTAL LINES COUNTED: $total
จำนวนบรรทัดทั้งหมด
ไม่แน่ใจว่าฉันเข้าใจว่าคุณร้องขออย่างถูกต้อง เช่นนี้จะแสดงผลลัพธ์ในรูปแบบต่อไปนี้โดยแสดงจำนวนบรรทัดสำหรับแต่ละไฟล์:
# wc -l `find /path/to/directory/ -type f`
103 /dir/a.php
378 /dir/b/c.xml
132 /dir/d/e.xml
613 total
อีกวิธีหนึ่งในการแสดงผลจำนวนอักขระบรรทัดใหม่ทั้งหมดโดยไม่มีไฟล์ตามจำนวนไฟล์ที่คำสั่งต่อไปนี้สามารถพิสูจน์ได้ว่ามีประโยชน์:
# find /path/to/directory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
613
ที่สำคัญที่สุดฉันต้องการสิ่งนี้ใน 'รูปแบบที่มนุษย์อ่านได้' เช่น 12,345,678 มากกว่า 12345678
Bash มีฟังก์ชั่นprintfในตัว:
printf "%0.2f\n" $T
เช่นเคยมีหลายวิธีที่สามารถใช้เพื่อให้ได้ผลลัพธ์เดียวกันกับที่กล่าวถึงที่นี่