Đây là một cách an toàn:
grep -lrIZ foo . | xargs -0 rm -f --
-l in tên tệp của tệp phù hợp với mẫu tìm kiếm.
-rthực hiện tìm kiếm đệ quy cho mẫu footrong thư mục đã cho .. Nếu điều này không hiệu quả, hãy thử -R.
-I(viết hoa i) khiến các tệp nhị phân như PDF bị bỏ qua.
-Z đảm bảo rằng tên tệp bằng 0- (nghĩa là nul-) bị chấm dứt để tên chứa khoảng trắng không bị hiểu sai (nghĩa là nhiều tên thay vì một tên).
xargs -0cung cấp tên tệp từ grepđến rm -f, tách các từ bằng byte (nul) byte (nhớ -Ztùy chọn từ grep).
--thường bị lãng quên nhưng điều rất quan trọng là đánh dấu sự kết thúc của các tùy chọn và cho phép xóa các tệp có tên bắt đầu -.
Nếu bạn muốn xem tập tin nào sắp bị xóa, chỉ cần xóa | xargs -0 rm -f --phần đó và bỏ Ztùy chọn grep.
Một người dùng khác đã đề xuất một cái gì đó như sau, mà bạn không nên chạy vì nó không an toàn:
files=`grep foo * | cut -d: -f1`
rm -f $files # unsafe, do not run it!
Nếu tôi có các tệp ImportantStuffmà tôi không muốn xóa và obsolete ImportantStuffchứa foo, thì tôi sẽ mất ImportantStuff(và không obsolete ImportantStuff !) Khi tôi chạy lệnh này, vì $filesbị phá vỡ tại các khoảng trắng khi nó được giải thích. Thật nguy hiểm khi đặt một danh sách tên tệp vào biến vỏ vô hướng theo cách này.