Cách lấy kích thước của tệp trong tập lệnh Bash

How Get Size File Bash Script



Khi viết kịch bản shell, chúng ta có thể gặp một tình huống mà chúng ta cần biết kích thước của một tệp. Ví dụ: bạn có thể cần sử dụng kích thước này để thực hiện các hành động khác, chẳng hạn như di chuyển tệp đến một thư mục khác hoặc xóa nó.

Hướng dẫn này sẽ thảo luận về các phương pháp nhanh mà bạn có thể sử dụng trong tập lệnh bash để có được kích thước tệp ở định dạng được chỉ định như Byte, Kilobyte, Megabyte hoặc Gigabyte.







Phương pháp 1: Lệnh ls

Phương pháp đầu tiên là sử dụng lệnh ls cũ. Khi được ghép nối với các lệnh khác, lệnh ls có thể lấy kích thước của tệp.



Để triển khai tập lệnh, chúng ta cần đường dẫn đầy đủ của tệp, liệt kê thông tin tệp bằng ls và lấy kích thước bằng lệnh như awk.



Một tập lệnh mẫu cho điều đó sẽ trông như thế này:





#! / bin / bash
quăng đi 'Nhập đường dẫn đầy đủ đến tệp.'
đọc tập tin
Kích thước tập tin= $(ls -lh $ tệp | awk '{in $ 5}')
quăng đi '$ tệpcó kích thước$ filesize'

Tập lệnh trên tương đối đơn giản. Sử dụng lệnh echo và read, chúng tôi nhận được tên của đường dẫn đầy đủ của tệp.

Tiếp theo, chúng tôi sử dụng lệnh ls -lh để liệt kê tất cả các thư mục và kích thước ở định dạng con người có thể đọc được, và cuối cùng, chuyển đầu ra cho awk và lấy kích thước là 5NSBiến đổi.



Sau đây là hình ảnh minh họa của script.

chmod + x size.sh
./size.sh

Đây là đầu ra cho điều đó:

sudo ./size.sh
Nhập đường dẫn đầy đủ đến tệp
/ etc / passwd
/ etc / passwd có kích thước 2,9K

Phương pháp 2: Lệnh wc

Một phương pháp khác mà chúng ta có thể sử dụng để lấy kích thước của tệp trong tập lệnh bash là lệnh wc. Lệnh wc trả về số lượng từ, kích thước và kích thước của tệp tính bằng byte.

Bây giờ:

Như bạn đã biết, việc đọc kích thước tệp tính bằng byte không phải là rất dễ dàng. Để chống lại điều này, chúng tôi có thể triển khai một menu đơn giản và hỏi người dùng định dạng kích thước như KB, MB và GB.

Tùy thuộc vào định dạng được chọn, chúng tôi sẽ chuyển đổi các byte sang định dạng đã nói.

Đây là một tập lệnh ví dụ để triển khai logic như vậy:

#! / bin / bash
quăng đi 'Chọn định dạng kích thước, sử dụng các giá trị số (1 cho Byte, 2 cho Kilobyte, v.v.)'
quăng đi '''
1. Byte
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
quăng đi '************************************************ * ********************** '
đọcđịnh dạng

quăng đi 'Nhập đường dẫn đầy đủ đến tệp đích:'
đọc tập tin
Kích thước tập tin= $(wc -NS $ tệp | awk '{in $ 1}')
nếu như [[('định dạng $'==1)]];
sau đó
quăng đi '$ tệplà khoảng$ filesizeByte '
elif [[('định dạng $'==2)]];
sau đó
xấp xỉ= $(bc <<<'scale = 3;$ filesize/ 1024 ')
quăng đi '$ tệpxấp xỉ$ kbKB '
elif [[('định dạng $'==3)]];
sau đó
mb= $(bc <<<'scale = 6;$ filesize/ 1048576 ')
quăng đi '$ tệpxấp xỉ$ mbMB '

elif [[('định dạng $'==4)]];
sau đó
gb= $(bc <<<'scale = 12;$ filesize/ 1073741824 ')
quăng đi '$ tệpxấp xỉ$ gbGB '
khác
quăng đi 'Định dạng không chính xác.'
lối ra
thì là ở

Trong tập lệnh ở trên, chúng tôi bắt đầu bằng cách yêu cầu người dùng nhập định dạng kích thước tệp. Bash đọc đầu vào này và lưu trữ nó vào biến định dạng.

Tiếp theo, chúng tôi nhắc người dùng về đường dẫn tệp và lưu trữ biến này trong tệp.

Bước tiếp theo gọi lệnh wc -c-trên tệp được chỉ định. Vì wc -c trả về kích thước tệp tính bằng byte và đường dẫn của tệp, chúng tôi sử dụng AWK để chỉ lấy kích thước tệp. Chúng tôi lưu trữ kích thước theo byte dưới dạng kích thước tệp.

Cuối cùng, chúng tôi triển khai một câu lệnh if đơn giản để kiểm tra xem định dạng kích thước có phải là 1 (Byte), 2 (Kilobyte), 3 (Megabyte), 4 (Gigabyte) hay không. Sau đó, chúng tôi sử dụng lệnh bc để chuyển đổi kích thước tệp tính bằng byte sang định dạng được chỉ định.

GHI CHÚ: Chúng tôi sử dụng một thang đo thay đổi cho lệnh bc để điều chỉnh số lượng số thập phân cho mỗi đánh giá.

Hình ảnh dưới đây cho thấy cách thức hoạt động của script.

MỘT LƯU Ý KHÁC : Tập lệnh trên là thuần túy và do đó mở ra những cải tiến đáng kể. Hãy tự do cải thiện nó và điều chỉnh nó theo nhu cầu của bạn.

Phương pháp 3: Sử dụng lệnh stat

Chúng ta không thể quên lệnh stat. Sử dụng lệnh stat, chúng tôi có thể hiển thị thông tin chi tiết về tệp hoặc hệ thống tệp.

Lệnh stat cũng trả về kích thước tính bằng byte. Bạn có thể sử dụng logic tương tự trong tập lệnh ở trên để chọn định dạng.

Đây là một tập lệnh đơn giản bằng cách sử dụng lệnh stat:

#! / bin / bash
quăng đi 'Nhập đường dẫn tệp.'
đọc tập tin
Kích thước tập tin= $(tiểu bang -NS %NS$ tệp)
quăng đi '$ tệpchính xác$ filesizebyte. '

Đang kết thúc

Hướng dẫn này đã thảo luận về ba phương pháp bạn có thể sử dụng để lấy kích thước của tệp bằng cách sử dụng tập lệnh bash. Cần lưu ý rằng Linux có một bộ sưu tập toàn diện các công cụ và phương pháp để đạt được điều này. Tìm cái phù hợp với bạn và gắn bó với nó.