Android

Làm thế nào để có được kích thước của một thư mục trong linux

Lab 3.B5: Dùng lệnh switch-case tạo menu trong lập trình C

Lab 3.B5: Dùng lệnh switch-case tạo menu trong lập trình C

Mục lục:

Anonim

Khi liệt kê nội dung của một thư mục bằng ls , bạn có thể nhận thấy rằng kích thước của các thư mục hầu như luôn là 4096 byte (4 KB). Đó là kích thước của không gian trên đĩa được sử dụng để lưu trữ thông tin meta cho thư mục, chứ không phải những gì nó chứa.

Lệnh bạn sẽ muốn sử dụng để có được kích thước thực tế của một thư mục là du , viết tắt của việc sử dụng đĩa trên đĩa cứng.

Lấy kích thước của một thư mục

Lệnh du hiển thị lượng không gian tệp được sử dụng bởi các tệp hoặc thư mục được chỉ định. Nếu đường dẫn được chỉ định là một thư mục, du tóm tắt việc sử dụng đĩa của từng thư mục con trong thư mục đó. Nếu không có đường dẫn nào được chỉ định, du báo cáo việc sử dụng đĩa của thư mục làm việc hiện tại.

Khi được gọi mà không có bất kỳ tùy chọn nào, du sẽ hiển thị việc sử dụng đĩa của thư mục đã cho và mỗi thư mục con của nó theo byte.

Thông thường, bạn sẽ muốn hiển thị không gian bị chiếm bởi thư mục ở định dạng có thể đọc được. Ví dụ: để lấy tổng kích thước của thư mục /var , bạn sẽ chạy lệnh sau:

sudo du -sh /var

Đầu ra sẽ trông giống như thế này:

85G /var

Hãy giải thích lệnh và các đối số của nó:

  • Lệnh bắt đầu bằng sudo vì hầu hết các tệp và thư mục trong thư mục /var đều thuộc quyền sở hữu của người dùng root và người dùng thông thường không thể đọc được. Nếu bạn bỏ qua sudo , lệnh du sẽ in ra du du: không thể đọc thư mục. s - Chỉ hiển thị tổng kích thước của thư mục được chỉ định, không hiển thị tổng kích thước tệp cho thư mục con. h - Kích thước in ở định dạng có thể đọc được ( h ). /var - Đường dẫn đến thư mục bạn muốn lấy kích thước.

Điều gì nếu bạn muốn hiển thị việc sử dụng đĩa của các thư mục con cấp đầu tiên? Bạn có hai lựa chọn. Cách đầu tiên là sử dụng ký hiệu dấu hoa thị ( * ) như hình bên dưới, có nghĩa là phù hợp với mọi thứ không bắt đầu bằng dấu chấm ( . ) ". Tùy chọn -c yêu cầu du in ra tổng cộng tất cả các kích cỡ:

sudo du -shc /var/*

24K /var/db 4.0K /var/empty 4.0K /var/games 77G /var/lib 4.0K /var/local 0 /var/lock 3.3G /var/log 0 /var/mail 4.0K /var/opt 0 /var/run 196K /var/spool 28K /var/tmp 85G total

Một cách khác để nhận báo cáo về việc sử dụng đĩa của các thư mục con cấp đầu tiên là sử dụng tùy chọn --max-depth :

sudo du -h --max-depth=1 /var

77G /var/lib 24K /var/db 4.0K /var/empty 4.0K /var/local 4.0K /var/opt 196K /var/spool 4.0K /var/games 3.3G /var/log 5.0G /var/cache 28K /var/tmp 85G /var 85G total

Theo mặc định, lệnh du hiển thị không gian đĩa được sử dụng bởi thư mục hoặc tệp. Để tìm kích thước rõ ràng của một thư mục, hãy sử dụng tùy chọn --apparent-size . Kích thước rõ ràng của các tập tin của một tập tin là bao nhiêu dữ liệu thực sự trong tập tin.

sudo du -sh --apparent-size /var

Khi bạn chuyển một thư mục qua SCP, Rsync. Hoặc SFTP, lượng dữ liệu được truyền qua mạng là kích thước rõ ràng của các tệp. Đây là lý do tại sao kích thước của không gian trên đĩa được sử dụng trên nguồn khi được hiển thị với du (không có --apparent-size ) không giống với kích thước trên mục tiêu.

Lệnh du cũng có thể được kết hợp với các lệnh khác với đường ống.

Ví dụ, để in 5 thư mục lớn nhất trong thư mục /var , bạn sẽ chuyển đầu ra của du sang lệnh sort để sắp xếp các thư mục theo kích thước của chúng và sau đó chuyển đầu ra sang lệnh head sẽ chỉ in 5 thư mục trên cùng:

sudo du -h /var/ | sort -rh | head -5

85G /var/ 77G /var/lib 75G /var/lib/libvirt/images 75G /var/lib/libvirt 5.0G /var/cache/pacman/pkg

Phần kết luận

Trong Linux, bạn có thể lấy kích thước của một thư mục bằng lệnh du .

đĩa thiết bị đầu cuối