วิธีรับขนาดของไฟล์ใน Bash Script

How Get Size File Bash Script



เมื่อเขียนเชลล์สคริปต์ เราอาจเจอสถานการณ์ที่เราจำเป็นต้องทราบขนาดของไฟล์ ตัวอย่างเช่น คุณอาจต้องใช้ขนาดนี้เพื่อดำเนินการอื่นๆ เช่น การย้ายไฟล์ไปยังไดเร็กทอรีอื่นหรือการลบ

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







วิธีที่ 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 มีชุดเครื่องมือและวิธีการที่ครอบคลุมเพื่อให้บรรลุเป้าหมายนี้ ค้นหาสิ่งที่ใช่สำหรับคุณและยึดมั่นกับมัน