Câu trả lời:
Không, không có lựa chọn nào như vậy, cũng không nên có.
Nếu bạn cần đo lường điều đó, trước tiên bạn phải biết có bao nhiêu tệp hiện diện trên hệ thống của mình, điều đó có nghĩa là lặp qua mọi thứ hai lần, nó có thể chậm
Một ví dụ rõ ràng là nếu bạn trích xuất mã nguồn kernel file-roller
, nó chậm hơn so với thực hiện cùng một cách tar
trực tiếp, bởi vì con lăn tệp cần phải loại bỏ tất cả các tệp trước (nếu không, thanh tiến trình có thể được hiển thị không chính xác) và bạn chờ một trong khi trước khi quá trình khai thác thực sự bắt đầu.
Đây không phải là một giải pháp hiệu quả, nhưng cũng không tệ bằng việc lặp đi lặp lại mọi thứ hai lần.
Số lượng tệp được xử lý updatedb
bằng:
updatedb -v | wc -l
hoặc gần bằng:
find / -mount | wc -l
Chúng ta không thể sử dụng các lệnh này để lấy số, vì nó sẽ được lặp hai lần.
Nhưng chúng ta có thể sử dụng số lượng các nút được sử dụng, gần bằng nhau:
df -i | grep '/$' | awk '{print $3}'
Có giá trị này, chúng ta có thể tính toán khoảng cách chúng ta nhận được trong khi updatedb -v
lệnh đang chạy:
count=$(df -i | grep '/$' | awk '{print $3}')
sudo updatedb -v | while read
do
printf "%3d\r" $((100 * (++i) / count))
done
Điều này rất không hiệu quả, bởi vì printf
được gọi cho mỗi dòng trong đầu ra của updatedb -v
. Tốt hơn nếu chúng ta printf
chỉ cho một số dòng.
count=$(df -i | grep '/$' | awk '{print $3}')
sudo updatedb -v | while read
do
if (( ++i % (count/20) == 0 )); then
printf "%3d\r" $((100 * i / count))
fi
done
df -i
báo cáo của tôi 0 trong tất cả các cột cho /. Có thể trích xuất số lượng tệp của cơ sở dữ liệu hiện tại từ locate -S
(hoặc --statistics
chuyển đổi tương tự khác mà locate
việc triển khai của bạn có) cũng có thể được sử dụng làm số lượng tệp gần đúng.