Score:4

ฉันจะนับไฟล์ทั้งหมดในระบบของฉันได้อย่างไร?

ธง ng

ฉันต้องดูจำนวนไฟล์ที่ฉันมีในระบบทั้งหมด โดยเฉพาะอย่างยิ่ง ฉันต้องนับไฟล์ทั้งหมดจาก / (ทั้งระบบเลย) และขอเลขท้ายด้วย เหมือนมีไฟล์ 10,000 ไฟล์ในระบบทั้งหมด

ฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไร ฉันหวังว่าคุณจะสามารถช่วยได้!

cn flag
"โดยเฉพาะอย่างยิ่ง ฉันต้องนับไฟล์ทั้งหมดจาก / (ดังนั้นในระบบทั้งหมด)" ฉันพบปัญหาที่นี่... สิ่งนี้จะนับ tmpfs ด้วย และไฟล์เหล่านั้นเป็น -virtual- ไม่ใช่ไฟล์จริง
st flag
คุณกำหนด "ไฟล์ทั้งหมด" อย่างไร ไอโหนดทั้งหมด? ลิงค์ทั้งหมด? เฉพาะไฟล์ปกติหรือไฟล์พิเศษด้วย? ไฟล์พิเศษประเภทไหน? ไฟล์ไดเร็กทอรีพิเศษ? ไฟล์พิเศษของตัวละคร? บล็อกไฟล์พิเศษ? ซ็อกเก็ตไฟล์พิเศษ? Symlink ไฟล์พิเศษ? ท่อไฟล์พิเศษ? และ ณ จุดใด? ตัวอย่างเช่น เมื่อคุณเสียบเมาส์ ไฟล์พิเศษของอักขระจะถูกสร้างขึ้นโดยอัตโนมัติ ดังนั้นขึ้นอยู่กับว่าคุณเสียบเมาส์ไว้หรือไม่ ตัวเลขก็จะแตกต่างกัน
Eric Duminil avatar
us flag
แค่สงสัย ทำไมคุณถึงต้องการข้อมูลนี้
terdon avatar
cn flag
โปรด [แก้ไข] คำถามของคุณและชี้แจงความหมายของ "ไฟล์" เนื่องจากคำตอบจะขึ้นอยู่กับสิ่งที่คุณต้องการนับจริงๆ ควรนับ symlink หรือไม่ ฮาร์ดลิงก์ควรนับเป็นไฟล์เดียวหรือสองไฟล์ ควรนับไดเร็กทอรีหรือไม่? แล้วไฟล์อุปกรณ์ล่ะ? หรือชื่อท่อ? แล้วไฟล์ที่อยู่ใน RAM เท่านั้นล่ะ?
in flag
สิ่งที่ @Rinzwind ใน tmpfs อาจเป็นส่วนหนึ่งของสิ่งที่ OP ต้องการนับที่นี่หรือไม่ก็ได้ ปัญหาที่ใหญ่กว่าคือ `/sys`, `/proc` และ `/dev` ซึ่ง OP แทบไม่ต้องการนับ
Score:16
ธง in

ใช้ df -i เพื่อดูจำนวน ไอโนด ใช้แล้ว -> ฉันใช้ สนาม.

หรือจำกัดเอาต์พุตเช่น:

df --output=แหล่งที่มา เป้าหมาย ใช้

โปรดทราบว่าตัวเลขจาก หา และ df -i ไม่จำเป็นต้องตรงกัน:

  • df -i ยังนับไดเรกทอรี
  • ไฟล์ที่เชื่อมโยงไปยังไอโหนดเดียวกัน (ฮาร์ดลิงก์) จะนับเพียงครั้งเดียว
  • ไม่นับไอโหนดพิเศษบางตัวที่ไม่ได้เชื่อมโยงกับไดเร็กทอรีสำหรับใช้ภายใน
  • ดีเอฟ จะไม่ผ่านเข้าไปในไดเร็กทอรีที่เมาท์ เช่น /บูต หรือถ้าคุณมีแยก /บ้าน พาร์ทิชัน กับ หาคุณจะได้รับพฤติกรรมนั้นโดยใช้ -xdev ธง.

ตรวจสอบ คำตอบนี้เกี่ยวกับ U&L SE.

ฉันคาดว่าผลลัพธ์จะน้อยกว่า df -i เล็กน้อยเนื่องจากระบบไฟล์บางระบบ (รวมถึง ext4) มีไอโหนดพิเศษสองสามตัวที่ไม่ได้เชื่อมโยงกับไดเร็กทอรีใด ๆ สำหรับการใช้งานภายใน

bac0n avatar
cn flag
ความเร็วของ `df -i` ฉันสงสัยว่ามันดึงมาจากที่ไหนสักแห่ง คุณรู้ไหมว่าที่ไหน
pLumo avatar
in flag
@bac0n [`df` ใช้การเรียกระบบ `statvfs()` และถามระบบไฟล์สำหรับสถิติพื้นที่ปัจจุบัน](https://unix.stackexchange.com/questions/445764/how-does-df-know-how- ใช้พื้นที่มากโดยไม่จำเป็นต้องผ่านออล-เดอะ-ไฟ)
vn flag
`find` และ `df -i` จะไม่ตรงกันด้วยเหตุผลอื่น เนื่องจาก `find` จะสำรวจโฟลเดอร์ที่เมาท์ เพื่อหลีกเลี่ยงปัญหานี้ ให้ใช้ `-xdev` เป็น `sudo find / -xdev â¦`
KeyWeeUsr avatar
pl flag
@PaddyLandau จุดดีในส่วน "เมานต์" `/` เป็นพาร์ติชั่นบนอุปกรณ์ แต่อาจมีพาร์ติชั่นมากกว่าหรือแม้แต่โฟลเดอร์อื่น ๆ ที่สามารถติดตั้งผ่านกันและกันได้! บางที OP ควรกำหนดใหม่ตามวิธีการเมานต์ระบบไฟล์ Unix มิฉะนั้นอาจนับไฟล์พาร์ติชัน `/` อย่างเคร่งครัด (ดังนั้นเมื่อเมานต์ `/ home`, ` / boot` และอื่น ๆ บางทีตารางเมานต์ในคำถามอาจช่วยได้ ด้วย.
pLumo avatar
in flag
จริง! ขอบคุณ ฉันเพิ่มข้อมูลนี้
Score:14
ธง tm

คุณสามารถใช้ได้ หา / เพื่อแสดงรายการไฟล์ทั้งหมด เมื่อเอาต์พุตของ find ถูกเปลี่ยนเส้นทาง มันจะแสดงผลชื่อไฟล์ที่มีการขึ้นบรรทัดใหม่โดยขยายหลายบรรทัด ดังนั้นคุณจึงไม่สามารถนับบรรทัดได้ คุณสามารถส่งออกอย่างอื่นสำหรับแต่ละไฟล์และนับจำนวนอักขระได้:

sudo ค้นหา / -type f -printf 1 | สุขา - ค

ปราศจาก ซูโดคุณอาจไม่สามารถเข้าถึงเส้นทางทั้งหมดได้ ดังนั้นคุณจึงไม่สามารถนับไฟล์ทั้งหมดได้

cn flag
`locate` เร็วกว่ามาก :D ถ้าคุณไม่ตัดไดเร็กทอรี
cn flag
การนับไอโหนดน่าจะเร็วกว่าเช่นกัน
tm flag
`locate` สามารถเข้าถึงไฟล์ทั้งหมดได้หรือไม่
cn flag
ใช่ แต่คุณสามารถใช้ .conf เพื่อแยก dirs และจะตัด dirs บางส่วนตามค่าเริ่มต้น (เช่น tmpfs และ /media)
bac0n avatar
cn flag
คิดว่า `locate -c '*'` เป็นยอดคงเหลือที่ยอมรับได้ตามที่ @Rinzwind แนะนำ
cn flag
ปัญหาอื่น: สิ่งนี้จะนับลิงก์ด้วยฉันจะถือว่า? ดังนั้นค้นหา :D การนับ inodes เป็นวิธีที่ดีกว่า
qwr avatar
kr flag
qwr
`ค้นหา` นับอุปกรณ์บล็อกและไฟล์ระบบพิเศษหรือไม่
Ruslan avatar
bv flag
_"`find` ไม่ควรส่งออกไฟล์ที่มีการขึ้นบรรทัดใหม่ในชื่อหลายบรรทัด"_ â มีการอ้างอิงถึงสิ่งนี้หรือไม่ ในกรณีนี้ควรพิมพ์อย่างไร
tm flag
@Ruslan: ลองไปดู `สัมผัส $'a\nb' ; หา`
Ruslan avatar
bv flag
`สัมผัส $'a\nb'; ค้นหา | od -tx1` เอาต์พุต `2e 0a 2e 2f 61 0a 62 0a` ซึ่งมี `0a` ระหว่าง `61` และ `62` เนื่องจากโค้ดของคุณในคำตอบจะส่งเอาต์พุตไปยังไพพ์ `wc` จะได้รับสองบรรทัดสำหรับไฟล์นี้ คุณยังสามารถดูเอาต์พุตแบบไพพ์ได้โดยไพพ์ไปที่ `cat`: `find | แมว`.
st flag
ซึ่งจะไม่รวมไดเร็กทอรีซึ่งเป็นไฟล์ด้วย
tm flag
@Ruslan: นั่นเป็นเหตุผลที่ฉันรวมคำสั่งที่สองด้วย
tm flag
ตกลง ปรับปรุงใหม่
vn flag
ฉันคิดว่าคำตอบของคุณควรพูดถึงโฟลเดอร์ที่ติดตั้งจากพาร์ติชันอื่น หากต้องการรวมสิ่งเหล่านั้น ให้ใช้คำตอบของคุณตามที่กำหนด (แต่ใช้ `sudo`) หากต้องการยกเว้นพาร์ติชันที่เมาท์ ให้ใช้ `-xdev` เป็น `sudo find / -xdev â¦` อาจมีความซับซ้อนมากขึ้น เช่น หากคุณต้องการรวม `/ home ' แต่ไม่ใช่พาร์ติชันที่ติดตั้งอื่น
Peter Cordes avatar
fr flag
หากคุณละเว้น "-type f" ระบบจะนับไฟล์ทั้งหมด รวมถึงไดเร็กทอรีด้วย ไม่ใช่เฉพาะไฟล์ *ปกติ* (ใช้ `-not -name .` เพื่อแยกไดเร็กทอรีปัจจุบัน หากคุณไม่ได้ระบุ `/` arg ที่ชัดเจน)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา