ฉันต้องการประมาณจำนวนพื้นที่ดิสก์ที่ใช้โดยไดเรกทอรีโดยใช้คำสั่งต่อไปนี้
du -sh dir_name
ซึ่งไม่ได้คำนวณไดเรกทอรีที่ซ่อนอยู่ ในหน้าคนของ du ไม่มีข้อมูลเกี่ยวกับมัน วิธีคำนวณจำนวนพื้นที่ดิสก์ที่ใช้โดยไดเรกทอรีรวมถึงไฟล์ที่ซ่อนอยู่
ฉันต้องการประมาณจำนวนพื้นที่ดิสก์ที่ใช้โดยไดเรกทอรีโดยใช้คำสั่งต่อไปนี้
du -sh dir_name
ซึ่งไม่ได้คำนวณไดเรกทอรีที่ซ่อนอยู่ ในหน้าคนของ du ไม่มีข้อมูลเกี่ยวกับมัน วิธีคำนวณจำนวนพื้นที่ดิสก์ที่ใช้โดยไดเรกทอรีรวมถึงไฟล์ที่ซ่อนอยู่
คำตอบ:
ที่จริงแล้วนี่คือหลักฐาน:
mkdir .test
echo "hi" > .test/appo
du -a
4 ./.test/appo
8 ./.test
12 .
-aตัวเลือกที่จะใช้ในการแสดงอย่างชัดเจนว่าไฟล์ถูกนับ
คุณกำลังใช้du *?
คำสั่งนี้จะแสดงขนาดโดยสรุปของไดเรกทอรีที่ซ่อนอยู่
du -hs .[^.]*
คำสั่งที่ถูกต้องคือ: du -hs $(ls -A)
$ du -hs $(ls -A)
0 test
0 .test
du -hs .* *ตามที่กล่าวไว้ในคำตอบอื่นไม่ถูกต้องหากคุณต้องการแสดงรายการไฟล์และไดเรกทอรีย่อยทั้งหมด (รวมถึงไฟล์ที่ซ่อนอยู่)
ตัวอย่าง:
$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K .
1,8G ..
ทำไมถึงมีduพฤติกรรมเช่นนี้? เพราะคุณใช้-sสรุปผลและไฟล์และไดเรกทอรีย่อยทั้งหมดเป็นรายการย่อย.ดังนั้นจึงdu -hsไม่แสดงรายการ!
FYI สำหรับการประมาณขนาดที่ครอบครองโดยไดเรกทอรีต่าง ๆ มันจะดีกว่าถ้าใช้ncdu
คุณสามารถนำทางใน ncurses GUI ระหว่างไดเรกทอรีต่าง ๆ และมันจะแสดงขนาดของแต่ละไดเรกทอรี หากฉันใช้ du ฉันจะต้องดำเนินการคำสั่ง du สำหรับแต่ละไดเรกทอรีที่ฉันต้องการตรวจสอบซึ่งอาจยุ่งยาก คุณสามารถเรียงลำดับไดเรกทอรีตามขนาดที่ครอบครองเช่นกันใน ncurses GUI
duตาม นอกเหนือจากวิธีการแสดงที่ชื่นชอบแล้วไม่มีข้อบ่งชี้ที่ชัดเจนถึงความแตกต่างในการใช้งานใด ๆ
dเชื่อมโยงเพื่อลบไดเรกทอรีเพื่อให้คุณสามารถล้างข้อมูลได้โดยตรงจากอินเทอร์เฟซ
มันทำและมันไม่ ตัวอย่าง:
ในโฮมไดเรกทอรี: (มีผู้ใช้เพียงคนเดียวเท่านั้น)
du -sh /home/*
2.6G /home/user
ในสารบบผู้ใช้: (ความแตกต่างอย่างมากระหว่างจำนวนเงิน)
du -sh *
61M bin
2.0M dump-20130124104823.tar.gz
651M public_html
472K twitter-2.0.0.gem
11M wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
และเหตุผลคือ:
du -sh /home/user/.rvm/
1.9G /home/user/.rvm/
du จะคำนวณไดเรกทอรีที่ซ่อนอยู่ในขณะที่ลดลงในไดเรกทอรีย่อย แต่ในไดเรกทอรีปัจจุบัน * เพียงไม่ตรงกับรูปแบบ. directory_name เพื่อให้องค์ประกอบที่ซ่อนไดเรกทอรีปัจจุบันจะถูกละเว้น
ฉันใช้เวลาพอสมควรในการหาคำตอบและในขณะที่แชดี้abแนะนำว่ามันจะชัดเจนถ้าฉันใช้ ncdu
find -maxdepth 1 -exec du -sh "{}" \; | sort -h
สิ่งนี้จะช่วยให้คุณ:
นอกจากนี้ยังเรียงลำดับผลลัพธ์เพื่อให้ง่ายต่อการดูว่าอะไรที่ใหญ่ที่สุด ฉันทำสิ่งนี้เป็นชื่อแทนใน~/.bash_aliasesไฟล์ของฉันด้วย
alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
ตอนนี้ฉันสามารถดำเนินการbigเพื่อค้นหาไดเรกทอรีที่ใหญ่ที่สุดในไดเรกทอรีและsbigเมื่อฉันต้องการสิทธิ์ sudo
du -ahd1 | sort -hr | head -10
ต่อไปนี้เป็นคำอธิบายของ-dตัวเลือกในdu --help:
-d, --max-depth = N พิมพ์ผลรวมสำหรับไดเรกทอรี (หรือไฟล์ด้วย - ทั้งหมด) เฉพาะเมื่อมันเป็น N หรือน้อยกว่าระดับต่ำกว่าอาร์กิวเมนต์บรรทัดคำสั่ง; --max-depth = 0 จะเหมือนกับ --summarize
คำสั่งนี้จะช่วยให้คุณตรวจสอบการใช้งานดิสก์ได้รับในไดเรกทอรีและดำเนินการดังต่อไปนี้
"du -sch. [!.] * * | sort -h"
นี่คือตัวอย่างของวิธีการคำนวณการใช้งานดิสก์ของไดเรกทอรีเฉพาะ ฉันได้สร้างไดเรกทอรีชื่อ Du_sh และสร้างสองไฟล์ (หนึ่งซ่อน 10 MB และปกติ 20 MB) ภายใน
nikhil@debian:~$ mkdir Du_sh
nikhil@debian:~$ cd Du_sh/
nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240
10240+0 records in
10240+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s
nikhil@debian:~/Du_sh$
nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240
10240+0 records in
10240+0 records out
20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s
nikhil@debian:~/Du_sh$ du -sch .[!.]* *
10M .10MB
20M 20MB
30M total
nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h
10M .10MB
20M 20MB
30M total
nikhil@debian:~/Du_sh$
... you maybe using "du *" ?