Có gì sai với lệnh 'find' này?


14

Tôi đang thực hiện lệnh sau (để tìm tất cả các tệp có .tsphần mở rộng và xóa chúng):

find . -type f -name "*.ts" –delete

Một lỗi xuất hiện:

find: paths must precede expression: `–delete'

Tôi đã làm gì sai?

Câu trả lời:


35

Bạn có dấu typographic thay vì dấu trừ ( -).

Thay đổi lệnh của bạn thành

find . -type f -name "*.ts" -delete

Để biết cú pháp đầy đủ, xem man find:

HÀNH ĐỘNG
       -delete

        Xóa các tập tin; đúng nếu loại bỏ thành công. Nếu loại bỏ thất bại, một thông báo lỗi được đưa ra.
        Nếu -delete thất bại, findtrạng thái thoát của nó sẽ là khác (khi cuối cùng nó thoát).
        Sử dụng -deletetự động bật -depthtùy chọn.


Hãy cẩn thận với việc sao chép và dán các lệnh từ blog và bộ xử lý văn bản phong phú. Họ có thể chuyển đổi một số ký hiệu chính tả thành văn bản tương đương đơn giản của họ và ngược lại.

Cân nhắc sử dụng các trình soạn thảo văn bản đơn giản cho các ghi chú vào lần tới - sử dụng văn bản thuần túy, Markdown hoặc tái cấu trúc.

Và như @AuxTaco đã đề cập - một số blog có thể dựa vào bản sao của bạn để tấn công máy tính của bạn .



Trong trường hợp cụ thể này, chúng tôi không biết nguồn của lệnh này. Nếu tác giả ban đầu đã sai --thì động cơ đã chuyển đổi nó thành . Vì vậy, chúng tôi không biết toàn bộ câu chuyện :)
N0rbert

2
Tôi có thể kể câu chuyện: Tôi đã sao chép nó từ thiết bị đầu cuối sang tài liệu MS Word bao gồm bộ lệnh để triển khai máy chủ của chúng tôi. MS Word đang tự động sửa dấu gạch ngang trong một số trường hợp. Sau đó một năm hoặc một số sau khi tôi sao chép lệnh đó và câu hỏi đã mở ... Cảm ơn.
Dorad

1
Có lẽ tốt hơn là sử dụng Notepad ++ trong tình huống này, thay vì Word.
Davidw

1
Không bao giờ sử dụng một trình xử lý văn bản để chỉnh sửa mã. Đó là (một lý do lớn) tại sao vẫn có các trình soạn thảo văn bản. Điều cuối cùng bạn cần là các ký tự được thay thế, hoặc gói từ.
Joe
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.