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

15

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

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

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

Sam007
источник

Ответы:

24

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

Для случая использования, который вы упомянули, давайте предположим, что вы хотите найти 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]
roadmr
источник
спасибо, это прекрасно работает. Я был действительно смущен, и это помогает разобраться
Sam007
1
+1 Это хорошее введение, чтобы найти, а также учит ОП, как найти дополнительную информацию.
Igarzo