Xóa tất cả các tệp bắt đầu bằng dấu chấm hỏi


23

Tôi có một thư mục trong đó tôi có khoảng 4k tệp. Một số tệp này bắt đầu bằng aa ?hoặc !ký tự. Tôi cần xóa chúng nhưng không thể tìm thấy biểu thức nào có thể làm như vậy:

rm -f ./?*

chỉ cần xóa mọi thứ. Tôi có thể có thể sử dụng greptrên ls và chuyển nó qua xargsvà chuyển các tập tin sang thư mục khác nhưng tôi hy vọng có một cách thích hợp để làm việc này. Cần giúp đỡ về cả tập tin ?!.

Câu trả lời:


26

Không cần bất kỳ thứ ưa thích. Đơn giản chỉ cần thoát khỏi ?để nó không được coi là một phần của toàn cầu:

rm -f ./\?*

Điều này cũng làm việc !:

rm -f ./\!*

Hoặc trong một cú trượt ngã:

rm -f ./{\?,\!}*

Cập nhật

Chỉ cần lưu ý rằng bạn đã đề xuất grepđầu ra của ls. Tôi muốn làm bạn chú ý đến thực tế là bạn không nên phân tích đầu ra của ls


4
@recluze Không ngu ngốc; Rõ ràng là không biết làm thế nào nếu bạn không biết về việc thoát ký tự đại diện.
một CVn

@recluze Vẫn cảm thấy ngu ngốc sau 5 phiếu cho câu hỏi của bạn? :) Nhân tiện, xem câu trả lời cập nhật.
Joseph R.

Cảm ơn và cảm ơn :) ... Đã nhận thức được các vấn đề trong đầu ra ls nhưng các tệp của tôi có một mẫu cụ thể mà tôi có thể tin cậy. Tuy nhiên, điều tốt để biết :)
tái hiện

13

Trong trường hợp của tôi, các ký tự không thực sự là dấu chấm hỏi, nhưng các ký tự unicode dường như không thể hiển thị trong bảng điều khiển của tôi.

Sử dụng rm -i *làm việc cho tôi. Nếu bạn không muốn làm điều này, bạn cũng có thể xóa bằng inode, như được mô tả tại http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Để tìm inode, sử dụng:

ls -il

Sau đó làm:

find . -inum [inode-number] -exec rm -i {} \;
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.