Что не так с этой командой «найти»?

14

Я выполняю следующую команду (чтобы найти все файлы с .tsрасширением и удалить их):

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

Появляется ошибка:

find: paths must precede expression: `–delete'

Что я сделал не так?

Dorad
источник

Ответы:

35

У вас есть типографский знак вместо минус ( -).

Измените свою команду на

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

Для полного синтаксиса смотрите man find:

АКЦИИ
       -delete

        Удалить файлы; истина, если удаление прошло успешно. Если удаление не удалось, выдается сообщение об ошибке.
        В случае -delete неудачи findсостояние выхода будет отличным от нуля (когда оно в конце концов выйдет).
        Использование -deleteавтоматически включает -depthопцию.


Будьте осторожны с копированием и вставкой команд из блогов и текстовых редакторов. Они могут преобразовывать некоторые типографские символы в их текстовые эквиваленты и наоборот.

В следующий раз подумайте об использовании простых текстовых редакторов для заметок - используйте простой текст, Markdown или reStructuredText.

И, как упоминал @AuxTaco, некоторые блоги могут полагаться на ваше копирование для атаки на ваш компьютер .

N0rbert
источник
В данном конкретном случае мы не знаем источника этой команды. Если первоначальный автор ошибочно сделал, --то движок преобразовал его в . Так что мы не знаем всей истории :)
N0rbert
2
Я могу рассказать историю: я скопировал его с терминала в документ MS Word, состоящий из набора команд для развертывания нашего сервера. MS Word автоматически исправляет черту в некоторых случаях. Через год или несколько после того, как я скопировал эту команду и вопрос открылся ... Спасибо.
Дорад
1
Вероятно, в этой ситуации лучше использовать Notepad ++, а не Word.
Davidw
1
Никогда не используйте текстовый процессор для редактирования кода. Это (большая причина), почему все еще есть текстовые редакторы. Последнее, что вам нужно, это подставленные символы или перенос слов.
Джо