รับบรรทัดไฟล์ทั้งหมดในไดเร็กทอรีย่อยหลายรายการภายในไดเร็กทอรี (ไม่รวมเส้นสีดำ) [ซ้ำกัน]

ฉันต้องการสคริปต์ที่ผ่านทุกไฟล์ในไดเร็กทอรี (ซึ่งรวมถึงไดเร็กทอรีย่อย) และส่งคืน จำนวนบรรทัดทั้งหมด ในไฟล์ทั้งหมด ไม่รวมบรรทัดว่าง และ ยกเว้นโฟลเดอร์/ไฟล์ที่มีคำสำคัญอยู่ (บันทึก)

ขณะนี้ฉันมีบรรทัดโค้ดที่ส่งคืนจำนวนบรรทัดทั้งหมด (รวมถึงบรรทัดว่าง) ในไฟล์ของ ไดเร็กทอรีเดียว 'ไฟล์'

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

มีวิธีใดที่จะนำไปใช้เพื่อให้สามารถเรียกโค้ดที่สามารถอ่านผ่านได้หรือไม่ เช่น:

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

ไดเรกทอรีจำนวนมาก (หมายเลขที่ไม่รู้จัก) และส่งคืนจำนวนบรรทัดทั้งหมดของไฟล์ทั้งหมด (ไม่รวมบรรทัดว่าง) (และไม่รวมโฟลเดอร์/ไฟล์ที่มีคำสำคัญอยู่ (บันทึก)) ที่พบ

ขณะนี้ฉันกำลังใช้ BASH เพื่อเขียนสคริปต์ แต่ถ้ามีวิธีแก้ไขใน python ฉันก็ยินดีเป็นอย่างยิ่งที่ได้ใช้มัน


person carol Alex    schedule 15.09.2016    source แหล่งที่มา
comment
@ juanpa.arrivillaga ฉันได้อัปเดตคำถามของฉันเล็กน้อย ฉันต้องการจำนวนบรรทัดทั้งหมดโดยไม่รวมบรรทัดว่าง   -  person carol Alex    schedule 15.09.2016


คำตอบ (1)


ลองค้นหาไฟล์ทั้งหมดในไดเร็กทอรีแบบวนซ้ำ ( -type f ตั้งค่าสถานะเพื่อค้นหา) ระวังว่านี่จะพิมพ์ไฟล์ไบนารี่ออกมาเช่นเดียวกับรหัสปัจจุบันของคุณ

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

แก้ไข: โซลูชัน --files-from ที่ให้ไว้ใน ใช้ wc บน ไดเร็กทอรีย่อยทั้งหมดที่จะนับผลรวมของบรรทัดจะมีประสิทธิภาพมากกว่า ดังที่ลิงก์ไว้ในความคิดเห็นของคำถาม

person jedifans    schedule 15.09.2016
comment
ขอบคุณสำหรับการแก้ไขของคุณ ฉันกำลังจะถามคุณถึงความแตกต่างระหว่างโซลูชันของคุณกับโซลูชันที่ให้ไว้ใน stackoverflow.com/questions/13727917/ - person carol Alex; 15.09.2016
comment
ขออภัยที่ไม่ยอมรับคำตอบของคุณ ฉันได้อัปเดตคำถามของฉันเล็กน้อยเนื่องจากฉันลืมเพิ่มไว้ก่อนหน้านี้ - ฉันต้องการให้ส่งคืนจำนวนบรรทัดทั้งหมดให้ฉัน (ไม่รวมบรรทัดว่าง) - person carol Alex; 15.09.2016
comment
ไม่มีปัญหา. มันเป็นไฟล์โค้ดที่คุณนับอยู่หรือเปล่า? หากเป็นเช่นนั้น มีเครื่องมือวิเคราะห์โค้ด (loc) อยู่ไม่กี่บรรทัดสำหรับใช้กับเซิร์ฟเวอร์การรวมอย่างต่อเนื่อง - person jedifans; 15.09.2016
comment
ใช่! ฉันกำลังพยายามนับรหัสเป็นหลัก ฉันจะดูพวกเขา คุณจะรู้ไหมว่าฉันจะหลีกเลี่ยงการนับโฟลเดอร์/ไฟล์บางไฟล์ที่มีคำหลักอยู่ได้อย่างไร (เช่น 'บันทึก') - person carol Alex; 15.09.2016
comment
ขึ้นอยู่กับเครื่องมือ บางส่วนมีตัวเลือกในการยกเว้น บางส่วนไม่มี หากเป็นเช่นนั้น ให้กรองล่วงหน้าด้วย find/home/user/files/ -type f ! -path '*/log/*' - person jedifans; 15.09.2016