Що не так з цією командою "знайти"?


14

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

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

З'являється помилка:

find: paths must precede expression: `–delete'

Що я зробив неправильно?

Відповіді:


35

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

Змініть свою команду на

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

Повний синтаксис див man find:

ДІЇ
       -delete

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


Будьте обережні, скопіюючи та вставляючи команди з блогів та текстових процесорів. Вони можуть перетворити деякі типографічні символи в їх еквіваленти простого тексту та навпаки.

Подумайте використовувати наступний раз прості текстові редактори для приміток - використовуйте звичайний текст, Markdown або reStructuredText.

І як згадував @AuxTaco - деякі блоги можуть розраховувати на ваше копіювання для нападу на ваш комп’ютер .



У цьому конкретному випадку ми не знаємо джерела цієї команди. Якщо оригінальний автор помилково був, --тоді движок його перетворив . Тож ми не знаємо всієї історії :)
N0rbert

2
Я можу розповісти історію: я скопіював її з терміналу в документ MS Word, що складався з набору команд для розгортання нашого сервера. У деяких випадках MS Word автоматично фіксує тире. Потім через рік чи дещо після того, як я скопіював цю команду, і питання відкрилося ... Дякую.
Dorad

1
Напевно, краще використовувати Notepad ++ у цій ситуації, а не Word.
Davidw

1
Ніколи не використовуйте текстовий процесор для редагування коду. Ось чому (велика причина), чому ще є текстові редактори. Останнє, що вам потрібно, - це замінені символи або загортання слів.
Джо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.