Một cái gì đó tôi cảm thấy tôi nên biết chắc chắn: nếu tôi ls <something>
, sẽ rm <something>
loại bỏ chính xác các tập tin ls
được hiển thị? Có bất kỳ trường hợp nào rm
có thể loại bỏ các tập tin ls
không hiển thị? (Đây là trong bash 18.04)
Chỉnh sửa: cảm ơn tất cả những người đã trả lời. Tôi nghĩ rằng câu trả lời đầy đủ là sự kết hợp của tất cả các câu trả lời, vì vậy tôi đã chấp nhận câu trả lời được bình chọn nhiều nhất là "câu trả lời".
Những điều bất ngờ tôi đã học được trên đường đi:
ls
không đơn giản như bạn nghĩ khi xử lý các đối số của nó- Trong một cài đặt đơn giản không thay đổi với cài đặt Ubuntu, bí danh .bashrc
ls
- Đừng đặt tên tệp của bạn bắt đầu bằng dấu gạch ngang vì chúng có thể trông giống như đối số lệnh và đặt tên một -r là yêu cầu!
find -delete
tốt hơn rm
? Bạn nói "Đó là lý do tại sao" , nhưng nó hoàn toàn không rõ ràng với tôi những gì đề cập đến. Cũng lưu ý rằng find
lời mời của bạn sẽ xóa tất cả các tệp đệ quy trong thư mục hiện tại, nơi rm
sẽ chỉ xóa các tệp trong thư mục ngay lập tức. Cũng -name *
là một không-op. Nói chung, tôi khá bối rối trước lời khuyên của bạn ...
find
là vì bạn có thể chạy nó, xem tất cả các tệp và sau đó chạy cùng một lệnh với -delete
. Vì bạn đã thấy kết quả từ find
đó, nên không có sự mơ hồ về những gì sẽ bị xóa (tôi thực sự muốn nghe thêm chi tiết về điều này dưới dạng câu trả lời)
-delete
" - Nhưng làm thế nào tốt hơn là chạy ls <filespec>
, theo sau rm <filespec>
(mà OP đã biết cách thực hiện)?
find ... -print
trước để xác nhận tệp nào sẽ bị xóa, và sau đó find ... -delete
, bạn vẫn sẽ xóa các tệp được tạo giữa hai lệnh. Nếu bạn sử dụng cả hai -print
và -delete
, bạn không nhận được xác nhận, chỉ là một báo cáo thực tế về những gì đã bị xóa (và bạn cũng có thể sử dụng rm -v
).
rm
không có--dry-run
cờ ...