2017-03-16 25 views
5

Khi tôi làmLoại bỏ các file với rm sử dụng tìm và xargs

rm file.txt 

hoặc

rm *.txt 

Tôi nhắc cho mỗi tập tin, vì tôi không xác định tùy chọn -f để rm.

Nhưng khi tôi làm điều này:

find . -type f -name '*.txt' | xargs rm 

các tập tin bị loại bỏ mà không có sự xác nhận.

Hậu tố đằng sau điều này là gì? Có thể tìm ra lý do trong một số tài liệu không? Tôi không thể giải thích tại sao điều này lại xảy ra.

+2

Hành vi bạn mô tả là của 'rm -i'. Bạn có một bí danh đặt trong vỏ bạn cho lệnh rm không? Có 'bí danh rm' cho bất kỳ đầu ra? – Harald

+0

'alias rm' cho đầu ra' rm -i', để giải thích nó. Cảm ơn – Martin

Trả lời

5

Bạn có một bí danh được đặt cho lệnh rm thành 'rm -i'. Do đó, nếu bạn gọi lệnh trực tiếp như trong

rm file.txt 

hoặc

rm *.txt 

bí danh sẽ được mở rộng. Nếu bạn sẽ gọi nó với xargs như trong

find . -type f -name '*.txt' | xargs rm 

Các rm được thông qua như là một đối số chuỗi đơn giản để xargs và sau đó gọi bởi xargs mà không thay bí danh của vỏ. Bí danh của bạn có thể được xác định trong ~/.bashrc, trong trường hợp bạn muốn xóa nó.

Các vấn đề liên quan