Поиск команд в терминале Linux
Обновлено: 21.11.2024
Команда find в Linux является одной из наиболее важных и часто используемых утилит командной строки в Unix-подобных операционных системах. Команда find используется для поиска и поиска списка файлов и каталогов на основе условий, которые вы указываете для файлов, соответствующих аргументам.
команду find можно использовать в различных условиях, например, вы можете найти файлы по разрешениям, пользователям, группам, типам файлов, дате, размеру и другим возможным критериям.
В этой статье мы делимся нашим повседневным опытом работы с командой find в Linux и ее использованием в виде примеров.
В этой статье мы покажем вам 35 наиболее часто используемых примеров команд поиска в Linux. Мы разделили этот раздел на пять частей, начиная с базовой и заканчивая расширенным использованием команды find.
- Часть I. Основные команды поиска для поиска файлов с именами
- Часть II. Поиск файлов на основе их разрешений
- Часть III. Поиск файлов по владельцам и группам
- Часть IV. Поиск файлов и каталогов по дате и времени
- Часть V. Поиск файлов и каталогов по размеру
- Часть VI. Поиск нескольких имен файлов в Linux
1. Поиск файлов по имени в текущем каталоге
Найти все файлы с именем tecmint.txt в текущем рабочем каталоге.
2. Найти файлы в домашнем каталоге
Найдите все файлы в каталоге /home с именем tecmint.txt.
3. Поиск файлов по имени без учета регистра
Найти все файлы с именем tecmint.txt, содержащим как заглавные, так и строчные буквы, в /home каталоге.
4. Поиск каталогов по имени
Найти все каталоги с именем Tecmint в каталоге /.
5. Найти файлы PHP по имени
Найти все файлы php с именем tecmint.php в текущем рабочем каталоге.
6. Найти все файлы PHP в каталоге
Найти все файлы php в каталоге.
7. Найти файлы с разрешениями 777
Найти все файлы с правами доступа 777.
8. Найти файлы без разрешений 777
Найти все файлы без разрешения 777.
9. Найдите файлы SGID с разрешениями 644
Найти все битовые файлы SGID, права доступа которых установлены на 644.
10. Найдите файлы Sticky Bit с разрешениями 551
Найти все файлы набора Sticky Bit с правами доступа 551.
11. Найти SUID-файлы
Найти все файлы набора SUID.
12. Найти файлы SGID
Найти все файлы набора SGID.
13. Найти файлы только для чтения
Найти все файлы только для чтения.
14. Найти исполняемые файлы
Найти все исполняемые файлы.
15. Найти файлы с разрешениями 777 и Chmod на 644
Найдите все файлы разрешений 777 и используйте команду chmod, чтобы установить разрешения 644.
16. Найти каталоги с разрешениями 777 и Chmod на 755
Найдите все каталоги разрешений 777 и используйте команду chmod, чтобы установить разрешения 755.
17. Найти и удалить один файл
Чтобы найти один файл с именем tecmint.txt и удалить его.
18. Найти и удалить несколько файлов
Чтобы найти и удалить несколько файлов, таких как .mp3 или .txt, используйте.
19. Найти все пустые файлы
Чтобы найти все пустые файлы по определенному пути.
20. Найти все пустые каталоги
Чтобы сохранить все пустые каталоги по определенному пути.
21. Файл со всеми скрытыми файлами
Чтобы найти все скрытые файлы, используйте приведенную ниже команду.
22. Найти один файл по пользователю
Чтобы найти все или отдельные файлы с именем tecmint.txt в корневом каталоге / корневого каталога владельца.
23. Найти все файлы по пользователю
Чтобы найти все файлы, принадлежащие пользователю Tecmint, в /home каталоге.
24. Найти все файлы по группе
Чтобы найти все файлы, принадлежащие группе разработчиков, в /home каталоге.
25. Найти определенные файлы пользователя
Чтобы найти все файлы .txt пользователя Tecmint в /home каталоге.
26. Найти файлы, измененные за последние 50 дней
Чтобы найти все файлы, измененные 50 дней назад.
27. Найти файлы, к которым обращались за последние 50 дней
Чтобы найти все файлы, к которым обращались 50 дней назад.
28. Найти файлы, измененные за последние 50–100 дней
Чтобы найти все файлы, которые были изменены более 50 дней назад и менее 100 дней назад.
29. Найти измененные файлы за последний час
Чтобы найти все файлы, которые были изменены за последний час.
30. Найти измененные файлы за последний час
Чтобы найти все файлы, измененные за последний час.
31. Найти файлы, к которым обращались за последний час
Чтобы найти все файлы, к которым обращались за последний час.
32. Найти файлы размером 50 МБ
Чтобы найти все файлы размером 50 МБ, используйте .
33. Найдите размер от 50 МБ до 100 МБ
Чтобы найти все файлы размером более 50 МБ и менее 100 МБ.
34. Найти и удалить файлы размером 100 МБ
Чтобы найти все файлы размером 100 МБ и удалить их с помощью одной команды.
35. Найти определенные файлы и удалить
Найдите все файлы .mp3 размером более 10 МБ и удалите их с помощью одной команды.
На этом мы заканчиваем этот пост. В нашей следующей статье мы подробно обсудим другие команды Linux с практическими примерами. Сообщите нам свое мнение об этой статье в разделе комментариев.
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:
TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Похожие сообщения
148 мыслей о «35 практических примерах команды поиска Linux»
Бесчисленное количество примеров, которые АБСОЛЮТНО ОДИНАКОВЫ, так что этот список из 35 можно сократить до нескольких примеров. Затем, на мой взгляд, отсутствует важнейший поиск по шаблонам.
Большинство примеров показывают очень произвольные параметры для поиска файлов, и каждая команда повторяется несколько раз с небольшими отличиями, такими как -perm 1664 , -perm 7777 — Я ПОНЯЛ.
Я могу выполнять поиск с разными разрешениями. Из этих примеров можно сделать очень мало общих выводов.
Пожалуйста, перестаньте вводить людей в заблуждение. find — это не команда Linux, а команда GNU, Linux — это ядро, а не проект, в который входит find.
Я хочу найти адрес электронной почты для уведомлений по умолчанию для моего centeron NMS. Я не знаю, в каком файле это было настроено.
Как я могу найти [email protected], чтобы изменить идентификатор электронной почты, потому что мой почтовый сервер блокирует его?
Очень полезная страница. Поиск в противном случае сам по себе является огромной темой: эта страница поможет вам быстро справиться с поиском. Всего одна просьба. Пожалуйста, также добавьте примеры, иллюстрирующие использование параметра "-maxdepth", чтобы ограничить поиск желаемым количеством каталогов.
Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Само собой разумеется, что каждая хорошая среда рабочего стола Linux предлагает возможность поиска файлов и папок в вашей файловой системе. Если ваш рабочий стол по умолчанию не поддерживает — потому что это Linux — вы всегда можете установить приложение, чтобы упростить поиск в иерархии каталогов.
А как насчет командной строки? Если вы часто работаете в командной строке или администрируете серверы Linux без графического интерфейса, куда вы обращаетесь, когда вам нужно найти файл? К счастью, в Linux есть именно то, что вам нужно для поиска нужных файлов, встроенное прямо в систему.
Искомая команда — найти. Чтобы сделать понимание этой команды еще более заманчивым, как только вы ее узнаете, вы можете начать использовать ее в своих сценариях Bash. Это не только удобство, но и мощность.
Давайте познакомимся с командой find, чтобы вы могли управлять поиском файлов на серверах и компьютерах Linux без использования графического интерфейса.
Как использовать команду поиска
Когда я впервые увидел Linux в 1997 году, я не совсем понимал, как работает команда find; поэтому он никогда не работал так, как я ожидал. Это казалось простым; введите команду find FILENAME (где FILENAME — это имя файла), и команда должна была найти файл и сообщить об этом. Мало ли я знал, что в команде было что-то большее, чем это. Многое другое.
Если вы введете команду man find, вы увидите, что синтаксис команды find следующий:
Естественно, если вы не знакомы с тем, как работает человек, этот синтаксис может вас запутать или ошеломить. Для простоты понимания упростим это. Самый простой синтаксис базовой команды поиска будет выглядеть следующим образом:
Теперь посмотрим, как это работает.
Найти по имени
Давайте разберем эту основную команду, чтобы сделать ее максимально понятной. Самая упрощенная структура команды find должна включать путь к файлу, опцию и само имя файла. Вы можете подумать: «Если бы я знал путь к файлу, я бы уже знал, где его найти!». Ну, путь к файлу может быть корнем вашего диска; так что / будет законным путем. Ввод этого пути потребует больше времени для обработки, потому что он должен начинаться с нуля, но если вы не знаете, где находится файл, вы можете начать с него. Во имя эффективности всегда лучше иметь хотя бы представление, с чего начать поиск.
Следующий бит команды — опция. Как и в случае с большинством команд Linux, у вас есть ряд доступных опций. Тем не менее, мы начинаем с самого начала, так что давайте упростим задачу. Поскольку мы пытаемся найти файл по имени, мы будем использовать один из двух вариантов:
имя — с учетом регистра
iname — без учета регистра
Помните, Linux очень требователен к регистру, поэтому, если вы ищете файл с именем Linux.odt, следующая команда не даст результатов.
Однако, если вы измените команду с помощью параметра -iname, команда find найдет ваш файл независимо от регистра. Итак, новая команда выглядит так:
Найти по типу
f – обычный файл
l — символическая ссылка
c — символьные устройства
b – блокировать устройства
Теперь предположим, что вы хотите найти все блочные устройства (файл, который ссылается на устройство) в вашей системе. С помощью параметра -type мы можем сделать это следующим образом:
Приведенная выше команда приведет к довольно большому объему вывода (большая часть которого указывает на отказ в доступе), но будет содержать вывод, аналогичный следующему:
Вуаля! Блокировать устройства.
Тот же вариант можно использовать для поиска файлов конфигурации. Скажем, например, вы хотите найти все обычные файлы, которые заканчиваются расширением .conf. Эта команда будет выглядеть примерно так:
Приведенная выше команда просматривает всю структуру каталогов, чтобы найти все обычные файлы, оканчивающиеся на .conf. Если вы знаете, что большинство ваших конфигурационных файлов находятся в каталоге /etc, вы можете указать это так:
Приведенная выше команда выведет список всех ваших файлов .conf из каталога /etc (рис. 1).
Рисунок 1. Расположение всех файлов конфигурации в каталоге /etc.
Вывод результатов в файл
Одним очень удобным приемом является вывод результатов поиска в файл. Когда вы знаете, что вывод может быть обширным, или если вы хотите просмотреть результаты позже, это может быть невероятно полезным. Для этого мы будем использовать тот же пример, что и выше, и передать результаты в файл с именем conf_search. Эта новая команда будет выглядеть так:
Теперь у вас будет файл (conf_search), содержащий все результаты выполненной команды find.
Поиск файлов по размеру
Теперь мы подходим к моменту, когда команда find становится невероятно полезной. У меня были случаи, когда настольные компьютеры или серверы обнаруживали, что их диски загадочным образом заполнены. Чтобы быстро освободить место (или помочь найти проблему), вы можете использовать команду find для поиска файлов определенного размера. Скажем, например, вы хотите увеличить размер и найти файлы размером более 1000 МБ. Команда поиска может быть запущена с помощью параметра -size следующим образом:
Возможно, вас удивит, как много файлов появится. С выводом команды вы можете просмотреть структуру каталогов и освободить место или устранить неполадки, чтобы узнать, что загадочным образом заполняет ваш диск.
Вы можете выполнять поиск по следующим описаниям размеров:
b — блоки по 512 байт
Продолжайте учиться
Мы только немного коснулись команды find, но теперь у вас есть общее представление о том, как находить файлы в ваших системах Linux. Обязательно выполните команду man find, чтобы получить более глубокие и полные знания о том, как заставить этот мощный инструмент работать на вас.
Поделиться этой записью
Авторское право © 2022 The Linux Foundation®. Все права защищены.Linux Foundation зарегистрировала товарные знаки и использует товарные знаки. Список товарных знаков The Linux Foundation см. на нашей странице «Использование товарных знаков». Linux является зарегистрированным товарным знаком Линуса Торвальдса. Условия использования | Политика конфиденциальности | Устав | Антимонопольная политика | Политика хорошей репутации
Linux, независимо от используемого вами дистрибутива, поставляется с рядом инструментов с графическим интерфейсом, которые позволяют искать файлы. Многие современные файловые менеджеры поддерживают поиск файлов прямо в списке файлов. Однако есть ряд ситуаций, когда вам нужно использовать консоль, например, во время сеанса SSH или когда X-сервер не запускается. Вот как вы можете быстро найти файлы с помощью терминала.
Если вы можете использовать графический интерфейс, поиск файлов не проблема. В моей любимой среде рабочего стола XFCE файловый менеджер Thunar позволяет искать файлы, вводя имя файла непосредственно в списке файлов.
Кроме того, есть Catfish, популярный инструмент поиска с поисковым индексом, который может очень быстро найти ваши файлы.
Я хотел бы поделиться методами, которые я использую сам, когда работаю в терминале.
Первый способ использует утилиту find, которая есть в любом дистрибутиве, даже во встраиваемых системах, построенных на busybox. Другой метод — это команда locate.
Чтобы найти файлы в терминале Linux, сделайте следующее.
- Откройте любимое терминальное приложение. Лично я предпочитаю терминал XFCE4.
- Введите следующую команду:
Аргументы выше следующие:
/путь/к/папке/ — папка, с которой начать поиск. Если не указано, поиск будет запущен в текущем каталоге.
Переключатели, которые я использую:
-iname - поиск файлов и папок, которые содержат указанную часть имени и игнорируют регистр.
Вот команда, которую я могу использовать для поиска своих статей о браузере Opera:
Здесь мы используем параметр -exec для запуска текстового редактора vim для всех файлов в результатах поиска. Часть «<>» обозначает файлы, найденные с помощью команды find. "\;" ending указывает конец команды для параметра -exec.
В этом руководстве подробно описаны наиболее полезные команды grep для систем Linux/Unix.
После изучения всех команд и примеров вы узнаете, как использовать grep для поиска в файлах текста из терминала.
- Linux или UNIX-подобная система
- Доступ к терминалу/командной строке
- Пользователь с разрешениями на доступ к нужным файлам и каталогам
Примечание. Строка не представляет собой строку текста, отображаемую на экране терминала. Строка в текстовом файле представляет собой последовательность символов до тех пор, пока не будет введен разрыв строки. Вывод команд grep может содержать целые абзацы, если параметры поиска не уточнены.
Что такое команда grep?
Grep — это аббревиатура, расшифровывающаяся как Global Regular Expression Print.
Grep — это инструмент командной строки Linux/Unix, используемый для поиска строки символов в указанном файле. Шаблон текстового поиска называется регулярным выражением. Когда он находит совпадение, он печатает строку с результатом. Команда grep удобна при поиске в больших файлах журналов.
Использование команды grep
Команда grep в своей основной форме состоит из трех частей. Первая часть начинается с grep, за которой следует искомый шаблон. После строки идет имя файла, в котором ищет grep.
Простейший синтаксис команды grep выглядит следующим образом:
Команда может содержать множество параметров, вариантов шаблонов и имен файлов. Комбинируйте столько вариантов, сколько необходимо, чтобы получить нужные результаты. Ниже приведены наиболее распространенные команды grep с примерами.
Примечание. Grep чувствителен к регистру. Обязательно используйте правильный регистр при выполнении команд grep.
Чтобы найти файл
Чтобы напечатать любую строку из файла, содержащего определенный набор символов, в нашем случае phoenix в файле sample2 , выполните команду:
Grep отобразит каждую строку, в которой есть совпадение со словом phoenix .При выполнении этой команды вы не получите точных совпадений. Вместо этого терминал печатает строки со словами, содержащими введенную вами строку символов. Вот пример:
Совет. Если шаблон поиска включает символы, отличные от буквенно-цифровых, используйте кавычки. Сюда входят пробелы или любой символ.
Поиск в нескольких файлах
Чтобы найти несколько файлов с помощью команды grep, вставьте имена файлов, которые вы хотите найти, разделив их пробелом.
В нашем случае команда grep для сопоставления слова phoenix в трех файлах sample , sample2 и sample3 выглядит следующим образом:
Терминал печатает имя каждого файла, содержащего совпадающие строки, и фактические строки, содержащие требуемую строку символов.
Вы можете добавить любое количество имен файлов. Терминал печатает новую строку с именем файла для каждого совпадения, которое он находит в перечисленных файлах.
Совет: обратитесь к нашей статье Команды Xargs, чтобы узнать, как использовать xargs с grep для поиска строки в списке файлов.
Поиск во всех файлах в каталоге
Чтобы найти все файлы в текущем каталоге, используйте звездочку вместо имени файла в конце команды grep.
В этом примере мы используем nix в качестве критерия поиска:
Вывод показывает имя файла с nix и возвращает всю строку.
Найти только целые слова
Grep позволяет находить и печатать результаты только для целых слов. Чтобы найти слово phoenix во всех файлах в текущем каталоге, добавьте -w к команде grep.
Эта опция печатает только строки с полным совпадением слов и именами файлов, в которых они были найдены:
Если параметр -w опущен, grep отображает шаблон поиска, даже если он является подстрокой другого слова.
Если вы хотите найти несколько строк и шаблонов слов, ознакомьтесь с нашей статьей о том, как выполнить поиск нескольких строк, шаблонов или слов.
Игнорировать регистр при поиске Grep
Поскольку команды grep чувствительны к регистру, одним из наиболее полезных операторов для поиска grep является -i. Вместо того, чтобы печатать результаты только в нижнем регистре, терминал отображает результаты как в верхнем, так и в нижнем регистре. Вывод включает строки с записями смешанного регистра.
Пример этой команды:
Если мы используем оператор -i для поиска файлов phoenix в текущем каталоге, результат будет выглядеть следующим образом:
Искать в подкаталогах
Чтобы включить в поиск все подкаталоги, добавьте оператор -r к команде grep.
Эта команда выводит совпадения для всех файлов в текущем каталоге, подкаталогах и точный путь с именем файла. В приведенном ниже примере мы также добавили оператор -w для отображения целых слов, но форма вывода осталась прежней.
Обратный поиск grep
Вы можете использовать grep для вывода всех строк, которые не соответствуют определенному шаблону символов. Чтобы инвертировать поиск, добавьте -v к команде grep.
Чтобы исключить все строки, содержащие phoenix , введите:
Терминал печатает все строки, не содержащие слова, используемого в качестве критерия поиска. Используйте -i, чтобы игнорировать регистр, чтобы полностью исключить слово, используемое для этого поиска:
Показать строки, точно соответствующие строке поиска
Команда grep печатает целые строки, когда находит совпадение в файле. Чтобы напечатать только те строки, которые полностью соответствуют строке поиска, добавьте параметр -x.
Вывод показывает только строки с точным соответствием.Если в той же строке есть какие-либо другие слова или символы, grep не включает их в результаты поиска. Не забывайте использовать кавычки всякий раз, когда в шаблоне поиска есть пробел или символ.
Вот сравнение результатов без оператора -x и с ним в нашей команде grep:
Чтобы получить список имен совпадающих файлов
Иногда вам нужно только увидеть имена файлов, которые содержат слово или строку символов, и исключить фактические строки. Чтобы вывести только те имена файлов, которые соответствуют вашему запросу, используйте оператор -l:
Вывод показывает точные имена файлов, которые содержат phoenix в текущем каталоге, но не печатает строки с соответствующим словом:
Напоминаем, что используйте оператор рекурсивного поиска -r, чтобы включить в поиск все подкаталоги.
Чтобы подсчитать количество совпадений
Grep может отображать имена файлов и количество строк, в которых он находит совпадения с вашим словом.
Используйте оператор -c, чтобы подсчитать количество совпадений:
Отображение количества строк до или после строки поиска
Иногда вам нужно больше контента в результатах поиска, чтобы решить, что наиболее релевантно.
Используйте следующие операторы, чтобы добавить нужные строки до, после совпадения или и то, и другое:
- Используйте -A и количество строк для отображения после совпадения: grep -A 3 phoenix sample — эта команда печатает три строки после совпадения.
- Используйте -B и количество строк для отображения перед совпадением: grep -B 2 phoenix sample — эта команда выводит две строки перед совпадением.
- Используйте -C и несколько строк для отображения до и после совпадения: grep -C 2 phoenix sample — эта команда выводит две строки до и после совпадения.
Отображение номеров строк с совпадениями grep
Когда grep выводит результаты с большим количеством совпадений, удобно видеть номера строк. Добавьте оператор -n к любой команде grep, чтобы отобразить номера строк.
Мы будем искать Phoenix в текущем каталоге, покажем две строки до и после совпадений вместе с их номерами строк.
Ограничить вывод grep фиксированным количеством строк
Отдельные файлы, например файлы журналов, могут содержать множество совпадений с шаблонами поиска grep. Ограничьте количество строк в выводе grep, добавив в команду параметр -m и число.
В этом случае терминал распечатает первые два совпадения, найденные в файле примера.
Если вы не укажете файл и выполните поиск по всем файлам в каталоге, на выходе будут напечатаны первые два результата из каждого файла вместе с именем файла, содержащего совпадения.
Теперь вы знаете, как использовать команду grep в Linux/Unix.
Команда grep отличается высокой гибкостью и содержит множество полезных операторов и параметров. Комбинируя команды grep, вы можете получить мощные результаты и найти текст, спрятанный в тысячах файлов.
Читайте также: