Làm thế nào để bạn chạy một bản rm khô để xem những tập tin nào sẽ bị xóa?


87

Tôi muốn xem những tập tin nào sẽ bị xóa khi thực hiện rmtrong linux. Hầu hết các lệnh dường như có một tùy chọn chạy khô để chỉ hiển thị thông tin như vậy, nhưng tôi dường như không thể tìm thấy một tùy chọn như vậy cho rm. Điều này thậm chí có thể?


Tôi cũng muốn xem những tập tin nào sẽ tạo ra lỗi vì thiếu quyền.
Simon Woodside

Câu trả lời:


121

Nói rằng bạn muốn chạy:

rm *.txt

Bạn chỉ có thể chạy:

echo rm *.txt

hoặc thậm chí chỉ:

echo *.txt

để xem những gì các tập tin rmsẽ xóa, bởi vì đó là vỏ mở rộng *.txt, không rm.

Lần duy nhất điều này sẽ không giúp bạn là cho rm -r.

Nếu bạn muốn xóa các tệp và thư mục theo cách đệ quy, thì bạn có thể sử dụng findthay vì rm -r, vd

find . -name "*.txt" -print

sau đó nếu nó làm những gì bạn muốn, thay đổi -printthành -delete:

find . -name "*.txt" -delete

tìm là một lựa chọn tốt IMO. Và nếu bạn muốn sử dụng một bài thuyết trình đồ họa tree.
ồn ào

2
Gân như hoan hảo. find . -name "*.txt" -deletedường như không được đệ quy tho. Đã xóa tất cả các tệp, nhưng không xóa các thư mục được liệt kê trong-print
Oscar Godson

1
@OscarGodson Giả sử các thư mục bị bỏ trống sau khi xóa các tệp, bạn có thể xóa chúng bằngfind . -type d -empty -delete
datguy

1
@OscarGodson - findsẽ không xóa các thư mục vẫn chứa các tệp (tương đương với rm dir/không có -r). Bạn sẽ phải làm trống thư mục đầu tiên - hay sử dụng findđể -exec rmvới các tùy chọn thích hợp để làm điều này. ví dụfind . -depth -name "*.txt" -exec rm -r {} +
shalomb

Sử dụng echo rm *.txtphương pháp dường như có một nhược điểm. Nó trình bày các kết quả trong một danh sách được nối (một chuỗi dài với một tệp sau tệp trước đó), trái ngược với danh sách dọc. Có cách nào để có được đầu ra để hiển thị trong một danh sách dọc (một tệp trên mỗi dòng) không? (CẬP NHẬT: Tôi thấy rằng findphương thức thực hiện những gì tôi đã yêu cầu. Vì vậy, tôi sẽ chạy với điều đó.)
lấy cảm hứng từ

16

Bạn có thể nói:

rm -i

để chạy nó trong chế độ tương tác, vì vậy rmsẽ nhắc bạn xác nhận xem mỗi tệp có nên bị xóa hay không. Bạn chỉ có thể trả lời không cho mỗi tệp để xem cái nào sẽ bị ảnh hưởng.


8
Điều này khá khó khăn với một số lượng lớn các tập tin.
Cory Klein

9
có n | rm -i #comment để đáp ứng thời lượng bình luận tối thiểu
Joshua

4

Bạn có thể sử dụng lsđể liệt kê tất cả các tệp sẽ bị xóa bằng cách rm:

ls ../path/*.txt

Nếu bạn cần liệt kê để xem các tệp sẽ bị xóa bằng đệ quy rm, thì hãy sử dụng -Rcờ với ls:

ls -R ../path/*.txt

Điểm tốt. Mặc dù nếu bạn biết mức độ lồng nhau thì bạn có thể đạt được điều này bằng cáchls */*/*.txt
Veneet Reddy 24/07/18

1
Bạn đúng. Với -Rtùy chọn.
Veneet Reddy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.