Как я могу использовать команду find более эффективно?

Я хотел знать, как лучше всего использовать команду find?

Я вообще пользуюсь, find [filename] [dir] что дает мне длинный список имен файлов, ни одно из которых никак не связано с моим поиском.

Мне просто нужно найти один файл в определенном каталоге. Какая команда для этого?

1 ответ

Решение

Вы обычно говорите найти, с чего начать поиск, и что искать. Таким образом, синтаксис путей поиска и того, что вы на самом деле пытаетесь найти, отличается.

Для случая использования, который вы упомянули, давайте предположим, что вы хотите найти passwd файл в /etc:

find /etc/ -name passwd

вы говорите "начиная с и т. д., найдите файл с именем passwd

Если вы не указываете критерии (или "опции" в языке поиска), то поиск выполняет следующее: он начинается с указанного вами пути (или путей) и находит все файлы и каталоги ниже, рекурсивно. Таким образом, опции "фильтруют" эти файлы, чтобы сузить то, что вы ищете.

Найдите все файлы JPG в любом месте вашей файловой системы:

find / -name "*jpg" 

Использование кавычек в ваших настройках рекомендуется, потому что в противном случае расширение оболочки может вызвать головную боль.

Найдите любые файлы PDF, независимо от случая, в Документах или Загрузках:

find Documents/ Downloads/ -iname "*pdf"

Если вы делаете man find и прокрутите вниз до пункта ТЕСТЫ, вы найдете все "критерии", которые можно найти, чтобы сузить область поиска. Вы можете искать файлы с определенными именами файлов, принадлежащие конкретным пользователям или группам, имеющие определенные разрешения на файлы, имеющие определенный тип (например, -type d найдете только каталоги, пока -type f найдет только простые файлы, исключая каталоги), файлы, которые старше или старше определенного количества дней (или минут), пустые файлы, исполняемые и т. д.

На справочной странице find вы также найдете раздел, который называется ACTIONS, он может идти после критериев и вызываться любым файлом, который соответствует всем критериям. Таким образом, вы можете иметь find делать такие вещи, как удаление найденных файлов, выполнение произвольных команд над ними и так далее.

Но, конечно, основной синтаксис остается:

find [starting path(s)] [conditions or criteria]
Другие вопросы по тегам