ใช้ - รวมกับคำสั่ง du


66

นี่อาจเป็นสิ่งพื้นฐาน แต่ฉันไม่สามารถทำงานได้ ฉันพยายามใช้ DU เพื่อให้ได้ขนาดไฟล์โดยรวมลบไดเรกทอรีบางตัว ฉันจำเป็นต้องยกเว้นไดเรกทอรีหนึ่งที่เฉพาะเจาะจงเรียกแต่ไม่ทุกไดเรกทอรีที่เรียกว่าuploads uploadsตัวอย่างเช่นโครงสร้างไฟล์ของฉันมีลักษณะเช่นนี้:

/store
  /uploads
    /junk_to_ignore
    /more_junk_to_ignore
  /user_one
    /uploads
  /user_two

ฉันสามารถเรียกใช้คำสั่งต่อไปนี้:

du -ch --exclude=uploads* 

และมันทำให้ฉันมีขนาดไฟล์ลบไดเรกทอรี "อัพโหลด" ทั้งหมด อย่างไรก็ตามในการพยายามที่จะแยกไดเรกทอรี (และไดเรกทอรีย่อยทั้งหมด) ฉันล้มเหลว ฉันได้ลองแล้ว:

du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'

แต่ดูเหมือนจะไม่สามารถคิดออก ฉันจะแยกไดเรกทอรีเฉพาะได้อย่างไร


username: store$ du -ch --exclude=./uploadsทำงานได้ (มีและไม่มีสัญลักษณ์แทน) สำหรับฉันจากภายในไดเรกทอรีร้านค้า คุณใช้คำสั่งนั้นอย่างแน่นอนและจากภายในโฟลเดอร์ร้านค้าหรือไม่? และมันจะต้องเป็นเส้นทางสัมพัทธ์ (ที่พบว่าเห็น / พิมพ์) ไม่แน่นอน
เควิน

คำตอบ:


88

คุณเกือบจะพบแล้ว :)

du -ch --exclude=./relative/path/to/uploads

หมายเหตุไม่มีเครื่องหมายดอกจันที่สิ้นสุด เครื่องหมายดอกจันหมายความว่าไม่ควรเว้นไดเรกทอรีย่อยทั้งหมดใน"อัปโหลด" - แต่ไม่ใช่ไฟล์ในไดเรกทอรีนั้นโดยตรง


4
แปลก ... ไวยากรณ์กับจุด ( du -sb --exclude=./relative/path/to/uploads) ไม่ทำงานสำหรับฉัน สิ่งนี้:du -sb --exclude relative/path/to/uploads
Nux

4
@Nux น่าจะเป็นรสชาติของduคุณ Mine (OSX) ไม่ได้มี--excludeแต่จะ-I maskต้อง "ละเว้นไฟล์และไดเรกทอรีที่ตรงกับรูปแบบที่ระบุ" ในตัวอย่างการทำงานของคุณคุณไม่ต้อง=ทำให้ฉันคิดต่อไปว่ามันเป็นเพียงแค่เวอร์ชันของคุณที่duจะduรุนแรงขึ้นเล็กน้อย
Phatskat

ใช่ [OSX] [1] เวอร์ชันดูเหมือนว่าเวอร์ชั่นที่เรียบง่ายกว่าของ [Linux du] [2] [1]: developer.apple.com/library/mac/documentation/Darwin/Reference/ ......
Nux

ถ้าฉันต้องการแยกไดเรกทอรีหลายรายการเช่นที่นี่ยกเว้นไดเรกทอรี junk_to_ignore และอัปโหลดไดเรกทอรี
Kiran K Telukunta

เหตุใดมันจึงทำงานกับเส้นทางแบบสัมพันธ์ แต่ไม่ใช่เส้นทางแบบสัมบูรณ์ แปลกมาก!
นิค

8

หากต้องการยกเว้นหลายไดเรกทอรีให้ส่งผ่าน --exclude flag อีกครั้ง

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude

1
คุณสามารถใช้งานได้ด้วยdu -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
Hajo Thelen


1

หากคุณต้องอยู่ใน macOS คุณต้องติดตั้ง GNU Coreutils ด้วยคำสั่งต่อไปนี้

brew install coreutils

คำสั่งส่วนใหญ่ที่ติดตั้งโดย Coreutils นำหน้าด้วยgเนื่องจากมีชื่อ BSD ติดตั้งไว้ล่วงหน้าบน macOS จากนั้นคุณสามารถทำสิ่งต่อไปนี้

gdu --exclude=Microsoft /Library/Fonts/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.