Bạn có thể sử dụng rm -v
để rm
in một dòng trên mỗi tệp. Bằng cách này bạn có thể thấy rằng rm
thực sự đang làm việc để xóa các tập tin. Nhưng nếu bạn có hàng tỷ tệp thì tất cả những gì bạn sẽ thấy là nó rm
vẫn hoạt động. Bạn sẽ không biết có bao nhiêu tệp đã bị xóa và còn lại bao nhiêu.
Công cụ này pv
có thể giúp bạn ước tính tiến độ.
http://www.ivarch.com/programs/pv.shtml
Đây là cách bạn sẽ gọi rm
với pv
đầu ra ví dụ
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
Trong ví dụ giả định này, tôi đã nói pv
rằng có 1000
các tệp. Đầu ra từ pv
cho thấy 562 đã bị xóa, thời gian trôi qua là 7 giây và ước tính để hoàn thành là trong 5 giây.
Một số giải thích:
pv -l
làm cho pv
việc đếm theo dòng mới thay vì byte
pv -s number
cho biết pv
tổng số là gì để nó có thể cung cấp cho bạn một ước tính.
- Chuyển hướng đến
logfile
cuối là cho đầu ra sạch. Nếu không, dòng trạng thái từ pv
được trộn lẫn với đầu ra từ rm -v
. Phần thưởng: bạn sẽ có một logfile về những gì đã bị xóa. Nhưng hãy cẩn thận các tập tin sẽ nhận được rất lớn. Bạn cũng có thể chuyển hướng đến /dev/null
nếu bạn không cần một bản ghi.
Để có được số lượng tệp bạn có thể sử dụng lệnh này:
$ find dirname | wc -l
Điều này cũng có thể mất nhiều thời gian nếu có hàng tỷ tệp. Bạn cũng có thể sử dụng pv
ở đây để xem nó đã đếm được bao nhiêu
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
Ở đây nó nói rằng phải mất 4 giây để đếm được 278k tệp. Số đếm chính xác ở cuối ( 278044
) là đầu ra từ wc -l
.
Nếu bạn không muốn chờ đếm thì bạn có thể đoán số lượng tệp hoặc sử dụng pv
mà không cần ước tính:
$ rm -rv dirname | pv -l > logfile
Như thế này bạn sẽ không có ước tính để kết thúc nhưng ít nhất bạn sẽ thấy có bao nhiêu tệp đã bị xóa. Chuyển hướng đến /dev/null
nếu bạn không cần logfile.
Nitpick:
- bạn có thực sự cần
sudo
không
- thường
rm -r
là đủ để xóa đệ quy. không cần cho rm -f
.