ฉันกำลังพยายามหาขนาดรวมของไฟล์ที่ใหญ่ที่สุดห้าไฟล์ที่พบในไดเร็กทอรี แต่ฉันไม่สามารถทำงานในรายการของฉันได้ ฉันมีสองวิธีในการค้นหาและจัดเรียง ไฟล์ที่ใหญ่ที่สุดห้าไฟล์
#!/bin/bash
DIR=$1 #เส้นทางไดเร็กทอรีเริ่มต้น
ถ้า [ ! -d "$DIR" ]; จากนั้น #หากไม่พบไดเร็กทอรี
echo "ไม่มีไดเร็กทอรี!"
ทางออก 1
ไฟ
echo "ห้าไฟล์ที่ใหญ่ที่สุดที่ใช้ ls คือ:"
test_ls=$( ls -lhR "$DIR" | grep '^-' | sort -r -k 5 -h | head -n 5 )
ดู่ -ch "$test_ls"
echo "ห้าไฟล์ที่ใหญ่ที่สุดที่ใช้ find/DU ได้แก่:"
test_find=$( ค้นหา "$DIR" -type f -exec du -ch {} + | sort -rh | head -n 5 )
du -ch "$test_find"
echo "จำนวนไฟล์ทั้งหมด: "
ls -lhR "$DIR" | เกรป '^-' | สุขา -l
echo "ขนาดไฟล์ทั้งหมด: "
du -sh "$DIR" | awk '{พิมพ์ $1}'
ถ้าฉันใช้ du กับตัวแปร ls ฉันจะได้รับ:
du: ตัวเลือกที่ไม่ถูกต้อง -- 'r'
du: ตัวเลือกที่ไม่ถูกต้อง -- 'w'
du: ตัวเลือกที่ไม่ถูกต้อง -- '-'
du: ตัวเลือกที่ไม่ถูกต้อง -- 'r'
และถ้าฉันใช้กับตัวแปร find ฉันจะได้รับสิ่งนี้สำหรับแต่ละไฟล์จากห้าไฟล์
du: ไม่สามารถเข้าถึง '429M': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
ทั้งรุ่น ls และรุ่น find ทำงานได้ดีสำหรับการแสดงรายการไฟล์ที่ใหญ่ที่สุดห้าไฟล์ภายใต้ไดเร็กทอรีที่กำหนด แต่ฉันหลงทางอย่างมากในการเพิ่มขนาดเข้าด้วยกัน