Как я могу использовать команду 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]