Làm cách nào để xóa tất cả các tệp có tên đã cho trong tất cả các thư mục con?


25

Tôi muốn xóa tất cả các tệp với một tên cụ thể trong tất cả các thư mục con của thư mục nhà của tôi.

Tôi đã thử:

rm -r file

trong thư mục nhà của tôi, nhưng nó không hoạt động vì tập tin đó không tồn tại trong thư mục đó.

Câu trả lời:



12

như một chi tiết về câu trả lời của @ tante, bạn có thể muốn đảm bảo danh sách tệp được sử dụng là chính xác trước khi xóa các tệp đó:

find <source_dir> -name <filename> -print

nếu kiểm tra cho thấy danh sách hợp lệ thì

find <source_dir> -name <filename> -delete

tùy chọn khác nếu muốn điều này trên nhiều thư mục sử dụng thư mục giữ tạm thời:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

Như mọi khi, vui lòng đảm bảo tính chính xác của bất kỳ tập lệnh nào trước khi thực hiện và luôn có sẵn bản sao lưu trong trường hợp xảy ra sự cố.


3
luôn đặt dấu ngoặc kép xung quanh các thay thế khác nhau hoặc lệnh của bạn sẽ không hoạt động với các tên tệp chứa các ký tự đặc biệt nhất định (khoảng trắng, ký tự đại diện và dấu gạch chéo ngược).
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles - Vâng, cảm ơn vì đã cập nhật và đảm bảo câu trả lời này là chính xác.
Wayne
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.