Câu trả lời:
Sử dụng:
find . -type f -size +4096c
để tìm các tệp lớn hơn 4096 byte.
Và:
find . -type f -size -4096c
để tìm các tệp nhỏ hơn 4096 byte.
Lưu ý sự khác biệt + và - sau khi chuyển đổi kích thước.
Công -size
tắc giải thích:
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
`b' for 512-byte blocks (this is the default if no suffix is
used)
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
The size does not count indirect blocks, but it does count
blocks in sparse files that are not actually allocated. Bear in
mind that the `%k' and `%b' format specifiers of -printf handle
sparse files differently. The `b' suffix always denotes
512-byte blocks and never 1 Kilobyte blocks, which is different
to the behaviour of -ls.
Tôi nghĩ rằng find
có thể hữu ích một mình mà không cần đến AWK. Ví dụ,
find ~ -type f -size +2k -exec ls -sh {} \;
Dấu ngã cho biết nơi bạn muốn tìm kiếm bắt đầu và kết quả sẽ chỉ hiển thị các tệp lớn hơn 2 kilobyte.
Để làm cho nó lạ mắt, bạn có thể sử dụng -exec
tùy chọn để thực thi một lệnh khác là liệt kê các thư mục này với kích thước của chúng.
Để biết thêm thông tin, đọc lên trang người đàn ông chofind
.
AWK thực sự là khá dễ dàng cho loại điều này. Dưới đây là một số điều bạn có thể làm với nó liên quan đến kiểm tra kích thước tệp, như bạn đã hỏi:
Liệt kê các tệp lớn hơn 200 byte:
ls -l | awk '{if ($5 > 200) print $8}'
Liệt kê các tệp dưới 200 byte và ghi danh sách vào một tệp:
ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog
Liệt kê các tệp 0 byte, ghi lại danh sách vào một tệp và xóa các tệp trống:
ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm
tee
và chỉ chuyển hướng đến một tệp, như ls -l > filelog
(hoặc ls -l >> filelog
) là gì?
Lớn hơn 2000 byte:
du -a . | awk '$1*512 > 2000 {print $2}'
Ít hơn 2000 byte:
du -a . | awk '$1*512 < 2000 {print $2} '