บทช่วยสอนนี้จะกล่าวถึงวิธีการด่วนที่คุณสามารถใช้ในสคริปต์ทุบตีเพื่อให้ได้ขนาดไฟล์ในรูปแบบที่ระบุ เช่น ไบต์ กิโลไบต์ เมกะไบต์ หรือกิกะไบต์
วิธีที่ 1: คำสั่ง ls
วิธีแรกคือการใช้คำสั่ง ls แบบเก่าที่ดี เมื่อจับคู่กับคำสั่งอื่นๆ คำสั่ง ls สามารถจับขนาดของไฟล์ได้
ในการใช้งานสคริปต์ เราต้องการพาธแบบเต็มของไฟล์ แสดงรายการข้อมูลไฟล์ด้วย ls และเลือกขนาดโดยใช้คำสั่ง เช่น awk
สคริปต์ตัวอย่างสำหรับสิ่งนั้นจะมีลักษณะดังนี้:
#!/bin/bash
โยนออก 'ป้อนเส้นทางแบบเต็มไปยังไฟล์'
อ่าน ไฟล์
ขนาดไฟล์= $(ลส -lh $ไฟล์ | awk '{พิมพ์ $5}')
โยนออก '$ไฟล์มีขนาด$filesize'
สคริปต์ข้างต้นค่อนข้างง่าย การใช้คำสั่ง echo และ read เราได้ชื่อเส้นทางแบบเต็มของไฟล์
ต่อไป เราใช้คำสั่ง ls -lh เพื่อแสดงรายการไดเร็กทอรีและขนาดทั้งหมดในรูปแบบที่มนุษย์อ่านได้ และสุดท้าย ผ่านเอาต์พุตไปที่ awk และคว้าขนาดเป็น 5NSตัวแปร.
ต่อไปนี้เป็นภาพประกอบของสคริปต์
chmod +x ขนาด.sh./size.sh
นี่คือผลลัพธ์สำหรับสิ่งนั้น:
sudo ./size.shป้อนเส้นทางแบบเต็มไปยังไฟล์
/etc/passwd
/etc/passwd มีขนาด 2.9K
วิธีที่ 2: คำสั่ง wc
อีกวิธีหนึ่งที่เราสามารถใช้เพื่อดึงขนาดของไฟล์ในสคริปต์ทุบตีคือคำสั่ง wc คำสั่ง wc ส่งกลับจำนวนคำ ขนาด และขนาดของไฟล์เป็นไบต์
ตอนนี้:
อย่างที่คุณทราบ การอ่านขนาดไฟล์เป็นไบต์นั้นไม่ใช่เรื่องง่าย เพื่อแก้ปัญหานี้ เราสามารถใช้เมนูง่ายๆ และถามผู้ใช้เกี่ยวกับรูปแบบขนาด เช่น KB, MB และ GB
ขึ้นอยู่กับรูปแบบที่เลือก เราจะแปลงไบต์เป็นรูปแบบดังกล่าว
นี่คือตัวอย่างสคริปต์เพื่อใช้ตรรกะดังกล่าว:
#!/bin/bashโยนออก 'เลือกรูปแบบขนาด ใช้ค่าตัวเลข (1 สำหรับไบต์ 2 สำหรับกิโลไบต์ ฯลฯ)'
โยนออก '''
1. ไบต์
2. กิโลไบต์
3. เมกะไบต์
4. GigaBytes
'''
โยนออก '****************************************************** * ********************** '
อ่านรูปแบบ
โยนออก 'ป้อนเส้นทางแบบเต็มไปยังไฟล์เป้าหมาย: '
อ่าน ไฟล์
ขนาดไฟล์= $(ห้องน้ำ -ค $ไฟล์ | awk '{พิมพ์ $1}')
ถ้า [[('$รูปแบบ'==1)]];
แล้ว
โยนออก '$ไฟล์ประมาณ$filesizeไบต์'
เอลฟ์ [[('$รูปแบบ'==2)]];
แล้ว
ประมาณ= $(bc <<<'มาตราส่วน=3;$filesize/ 1024 ')
โยนออก '$ไฟล์อยู่ที่ประมาณ$ kbกิโลไบต์ '
เอลฟ์ [[('$รูปแบบ'==3)]];
แล้ว
mb= $(bc <<<'มาตราส่วน=6;$filesize/ 1048576 ')
โยนออก '$ไฟล์อยู่ที่ประมาณ$ mbเอ็มบี '
เอลฟ์ [[('$รูปแบบ'==4)]];
แล้ว
gb= $(bc <<<'มาตราส่วน=12;$filesize/ 1073741824 ')
โยนออก '$ไฟล์อยู่ที่ประมาณ$ gbจีบี '
อื่น
โยนออก 'รูปแบบไม่ถูกต้อง'
ทางออก
เป็น
ในสคริปต์ด้านบน เราเริ่มต้นด้วยการขอให้ผู้ใช้ป้อนรูปแบบขนาดไฟล์ Bash อ่านอินพุตนี้และเก็บไว้ในตัวแปรรูปแบบ
ต่อไป เราจะแจ้งให้ผู้ใช้ทราบเส้นทางของไฟล์และเก็บตัวแปรนี้ไว้ในไฟล์
ขั้นตอนต่อไปเรียกคำสั่ง wc -c- บนไฟล์ที่ระบุ เนื่องจาก wc -c คืนค่าขนาดไฟล์เป็นไบต์และพาธของไฟล์ เราจึงใช้ AWK เพื่อดึงเฉพาะขนาดไฟล์ เราเก็บขนาดเป็นไบต์เป็นขนาดไฟล์
สุดท้าย เราใช้คำสั่ง if อย่างง่ายเพื่อตรวจสอบว่ารูปแบบขนาดเป็น 1 (ไบต์) 2 (กิโลไบต์) 3 (เมกะไบต์) 4 (กิกะไบต์) หรือไม่ จากนั้นเราใช้คำสั่ง bc เพื่อแปลงขนาดไฟล์เป็นไบต์ให้อยู่ในรูปแบบที่ระบุ
บันทึก: เราใช้มาตราส่วนผันแปรสำหรับคำสั่ง bc เพื่อรองรับจำนวนทศนิยมต่อการประเมิน
ภาพด้านล่างแสดงวิธีการทำงานของสคริปต์
หมายเหตุอื่น : สคริปต์ข้างต้นเป็นแบร์โบนล้วนๆ และดังนั้นจึงเปิดกว้างสำหรับการปรับปรุงที่สำคัญ อย่าลังเลที่จะปรับปรุงและปรับแต่งตามความต้องการของคุณ
วิธีที่ 3: การใช้คำสั่ง stat
เราไม่สามารถลืมคำสั่ง stat ได้ การใช้คำสั่ง stat เราสามารถแสดงข้อมูลโดยละเอียดเกี่ยวกับไฟล์หรือระบบไฟล์ได้
คำสั่ง stat จะคืนค่าขนาดเป็นไบต์เช่นกัน คุณสามารถใช้ตรรกะที่คล้ายกันในสคริปต์ด้านบนเพื่อเลือกรูปแบบ
นี่คือสคริปต์อย่างง่ายโดยใช้คำสั่ง stat:
#!/bin/bashโยนออก 'ป้อนเส้นทางของไฟล์'
อ่าน ไฟล์
ขนาดไฟล์= $(สถานะ -ค %NS$ไฟล์)
โยนออก '$ไฟล์แม่นยำ$filesizeไบต์ '
ในการปิด
บทช่วยสอนนี้ได้กล่าวถึงสามวิธีที่คุณสามารถใช้เพื่อให้ได้ขนาดของไฟล์โดยใช้สคริปต์ทุบตี เป็นเรื่องดีที่จะทราบว่า Linux มีชุดเครื่องมือและวิธีการที่ครอบคลุมเพื่อให้บรรลุเป้าหมายนี้ ค้นหาสิ่งที่ใช่สำหรับคุณและยึดมั่นกับมัน