Как выполнить поиск файлов и папок в linux
Содержание:
- Using Common find Commands and Syntax to Find a File in Linux
- How To Manage Files Using Plesk?
- Метод 2: Использование команды Locate
- Поиск файла в Linux по фамилии командой whereis
- Синтаксис Grep
- Найти файлы по размеру
- Find Files/Folders by Permissions
- Информация о сети
- Примеры использования
- Options and Optimization for Find Command for Linux
- Поиск файлов через терминал. Команда locate
- Фильтрация файлов по глубине
- find — синтаксис и зачем оно нужно
- Найти файлы по разрешениям
- Действия
- Поиск по типу
- Регулярные выражения в grep
- Поиск по размеру файла
- ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
- 2. Примеры использования команды Grep
- Примеры использования команды find
Using Common find Commands and Syntax to Find a File in Linux
expressions take the following form:
- The attribute will control the process’s behavior and optimization method.
- The attribute will define the top-level directory where begins filtering.
- The attribute controls the tests that search the directory hierarchy to produce output.
Consider the following example command:
This command enables the maximum optimization level (-O3) and allows to follow symbolic links (). searches the entire directory tree beneath for files that end with .
Basic Examples
Command | Description |
---|---|
Find a file called testfile.txt in current and sub-directories. | |
Find all files in the and sub-directories. | |
Find an empty file within the current directory. | |
Find all files (ignoring text case) modified in the last 7 days by a user named exampleuser. |
How To Manage Files Using Plesk?
Let’s say you have a website that’s all ready to go on your laptop/desktop and you’d like to use File Manager to upload it to the Plesk on Linux server:
- On your machine, you’ll need to take the folder with all of your website’s files on it and add it to a compressed archive in one of the usual formats (ZIP, RAR, TAR, TGZ, or TAR.GZ).
- In Plesk, go to Files, click the httpdocs folder to open it, click Upload, choose the archive file, and then click Open.
- As soon as you’ve uploaded it, click in the checkbox you see alongside and then on Extract Files.
How to Edit Files in File Manager
File Manager lets you edit your website pages by default. To do this you can use:
- An HTML editor or a “what-you-see-is-what-you-get” style of editor, which is a nice option because it adds the HTML tags for you. If you aren’t all that confident with HTML then this can be a helpful option.
- Code editor. When you open HTML files with this one you’ll be presented with text where the HTML syntax is highlighted. If you’re comfortable with adding HTML tags yourself then code editor is for you.
- Text editor. HTML files are opened as ordinary text with this one.
Your Plesk administrator may have already et up the Rich Editor extension, in which case you can use it for HTML file editing. Rich Editor works in a what-you-see-is-what-you-get fashion, just like Code Editor, although it’s better specced with features like a spellchecker for instance.
Here’s how to use File Manager to edit a file:
- Put the cursor over the file and the line that corresponds with it will show a highlight.
- Open the context menu for the file by clicking on it.
- Click Edit in … Editor (this will vary depending on your chosen editor).
How to Change Permissions with File Manager
There are some web pages and files that you don’t necessarily want to share with the world, and that’s where altering their permissions settings can come in handy.
To achieve this, find the item you want to restrict Internet access for like this:
- Place your cursor over it and wait for the highlight to appear as in the previous example.
- Click on the file to open its context menu and do the same again on Change Permissions.
- Make your change and then hit OK. If you’d like to find out more about how to look at and alter permissions in Setting File and Directory Access Permissions.
File Manager’s default approach is to change permissions in a non-recursive manner, so consequently, sub-files and directories don’t aren’t affected by the changed permissions of the higher-level directories they belong to. With Plesk for Linux, you can make File Manager modify permissions in a recursive manner, assuming that your Plesk administrator set up the Permissions Recursive extension and that you understand the octal notation of file permissions.
To enable recursive editing of access permissions:
- Place the cursor over the directory and wait for the highlight.
- Click to open its context menu and then again on Set Permissions Recursive.
- Now you can edit them. “Folder Permissions” is talking about the higher-level directory and any of its associated sub-directories. “File Permissions” applies to sub-files in this instance.
- When you’ve completed your permission amendments, click OK.
Метод 2: Использование команды Locate
Существует другая команда Locate, которую можно использовать для поиска файлов в Linux. В нем не так много условий поиска, как в утилите Find, но это намного лучше и быстрее, чем утилита Find. Причиной этого является фоновый процесс, который фактически выполняется в вашей системе и ищет и сохраняет новые файлы в своей собственной базе данных. В отличие от команды «Найти», она не выполняет поиск файлов и каталогов на локальном жестком диске, а ищет их в своей базе данных. Для работы поисковой утилиты ее база данных должна регулярно обновляться.
Установка Locate
Locate не устанавливается по умолчанию в ОС Linux. Вам нужно будет установить его вручную. Нажмите Ctrl + Alt + T , чтобы запустить Терминал, а затем введите следующую команду как sudo для установки утилиты Locate:
$ sudo apt-get install locate
После завершения установки вы можете использовать Найдите утилиту прямо сейчас.
Общий синтаксис команды:
$ locate –i filename
Где -i используется для игнорирования различий в регистре.
Поиск файла
Например, для поиска для имени файла «centos» используйте следующую команду в Терминале:
$ locate –i centos
Он будет искать все файлы, которые содержат строку «centos» в своих именах файлов.
Найти Несколько файлов
Вы также можете искать несколько имен файлов одновременно. Например, используйте следующую команду в Терминале для поиска двух файлов « sdn.txt» и « centos» :
$ locate –i sdn.txt centos
Поиск с использованием Wildcard
Вы также можете использовать подстановочный знак, чтобы найти файлы, соответствующие запросу. Например, для поиска всех файлов, оканчивающихся на «.iso», используйте следующую команду в Терминале:
$ locate –i *.iso
Обновление locate database
Команда Locate использует свою базу данных для работы , поэтому его нужно регулярно обновлять.Запустите следующую команду в Терминале, чтобы обновить базу данных служебной программы Locate:
$ sudo updatedb
Поиск файла в Linux по фамилии командой whereis
Whereis возвращает место расположения кода (опция -b), ман-страниц (функция -m), и исходные файлы (опция -s) для указанной команды. Если опции не указываются, выводится вся вразумительная информация. Эта команда быстрее чем “find” но менее полная. Команда whereis имеет последующий формат:
покажет положение бинарного файла, исходников и man-страницы бригады find:
Вот и подошла к концу эта маленькая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее значительных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желанно знать всем системным администраторам.
Синтаксис Grep
Синтаксис команды выглядит следующим образом:
$ grep шаблон
Или:
$ команда | grep шаблон
- Опции — это дополнительные параметры, с помощью которых указывается различные настройки, поиска и вывода, например количество строк или режим инверсии.
- Шаблон — это любая строка или регулярное выражение, по которому будет вестись поиск
- Файл и команда — это то место где будет вестись поиск. Как вы увидите дальше grep позволяет искать в нескольких файлах и даже в каталоге используя рекурсивный режим.
Как видите grep умеет не только выполнять поиск в файлах linux, но и может фильтровать стандартный вывод, это очень удобная функция, когда нужно выбрать только ошибки из логов или найти PID процесса в многочисленном выводе утилиты ps.
Найти файлы по размеру
Чтобы найти файлы по размеру файла, передайте параметр вместе с критериями размера. Вы можете использовать следующие суффиксы, чтобы указать размер файла:
- : блоки по 512 байт (по умолчанию)
- : байты
- : двухбайтовые слова
- : килобайты
- : мегабайты
- : гигабайты
Следующая команда найдет все файлы размером ровно байта внутри каталога :
Команда также позволяет вам искать файлы, которые больше или меньше указанного размера.
В следующем примере мы ищем все файлы менее 1 внутри текущего рабочего каталога
Обратите внимание на минус символ перед значением размера:. Если вы хотите искать файлы размером более 1 , вам нужно использовать символ плюс :
Если вы хотите искать файлы размером более 1 , вам нужно использовать символ плюс :
Вы даже можете искать файлы в пределах диапазона размеров. Следующая команда найдет все файлы от до :
Find Files/Folders by Permissions
7. Find Files/Folders by Permissions 777
The command will return all files that have 777 permissions. In this case, it will check all data with the name ‘trial.php’ and has 777 permissions.
8. Find SUID File With Permissions 755
The SUID (Set owner User ID upon execution) is temporary permission set for a file that permits a user to run executable by inheriting access permission of the executable owner. The below command will search for files that have SUID permission 755
9. Look for SGID File With 644 Permission
Akin to SUID, SGID (Set Group ID upon execution) is also temporary permission given to a user to run a file or executable. The primary difference is that it inherits permission of the group when running a file rather than the person logged into the system. One can search SGID files on Linux using the below command
10. Sticky Bit Files With Permissions 755
The sticky bit is another type of permission bit that when assigned on a file will only let the root user delete the file. Therefore, no other users will have the liberty to delete the data that is created by the root user.
So users enable sticky bit to ensure no one can delete the folder or contents. Apart from deletion, users have other full privileges. Below is the one can use the find command on Linux to search for files with permission 755:
Информация о сети
Рассмотрим 3 типа IP-адресов, с которыми приходится сталкиваться чаще всего:
- Внешний IP-адрес — адрес нашего устройства в глобальной сети.
- Локальной IP-адрес — адрес в локальной сети устройств.
- Внутренний IP-адрес — используется в основном утилитами для взаимодействия между собой. Всегда 127.0.0.1 или localhost
Разберем способы узнать внешний и локальный IP-адрес.
Как узнать внешний IP-адрес
В большинстве случаев, чтобы узнать свой внешний IP-адрес требуется сторонний сервис, который скажет с какого IP вы отправили ему запрос.
Как правило, эти сервисы представляют из себя обычные веб-страницы, вот их список:
- icanhazip.com
- ipecho.net/plain
- smart-ip.net/myip
- ident.me
- ipinfo.io/ip
- eth0.me
Разницы в этих сайтах особо нет, выберите тот, который именно вам отвечает быстрее всего.
Их можно открывать через браузер, но это не всегда удобно, поэтому в примерах мы будем рассматривать как обращаться к ним прямо из терминала.
Способ 1: wget
Утилита wget позволяет нам скачивать файлы и получать информацию с веб-страниц. Для начала проверим, установлена ли она, введите в терминал и если получите в ответ , значит самое время ее установить
Или вместо apt использовать yum, что зависит от вашего дистрибутива:
Итак, утилита wget установлена, теперь попробуем узнать свой внешний IP-адрес. Для этого введем в терминал команду с опциями , далее минус , а затем уже один из сайтов, список которых . В целом шаблон команды такой:
Например внешний IP-адрес можно узнать вот так:
Или вот так:
И так с любым сайтом из . Вот так это выглядит в терминале:
$ wget -qO - icanhazip.com 176.216.236.211 $ wget -qO - ipecho.net/plain 176.216.236.211
Способ 2: curl (проще)
Второй способ — использовать curl. Сама по себе утилита более универсальна, чем wget и заслуживает не одну отдельную статью, но в данном примере мы разберем как с ее помощью узнать свой внешний IP-адрес.
Для начала также проверим, установлена ли она, введите в терминал и если получите в ответ , значит самое время ее установить
Или вместо apt использовать yum, что зависит от вашего дистрибутива:
Итак, утилита curl установлена, теперь попробуем узнать свой внешний IP-адрес. C «курлом» это намного проще, нужно лишь ввести curl и один из сайтов, список которых . В целом шаблон команды такой:
Пробуем:
И с другим сайтом:
Вид из терминала:
$ curl smart-ip.net/myip 176.216.236.211 $ curl ident.me 176.216.236.211
Как узнать локальный IP-адрес
Локальный IP-адрес узнается при помощи разных утилит, мы рассмотрим наиболее популярный и актуальный инструмент для этих задач на сегодня — инструмент . Чтобы увидеть все сетевые интерфейсы, достаточно ввести:
В примере используется Debian 9 и вывод там такой:
$ ip addr show 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:3d:a0:09 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.122.253/24 brd 192.168.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe3d:a009/64 scope link valid_lft forever preferred_lft forever
В выводе отображается очень много информации, в которой легко запутаться. Мы видим 2 интерфейса, один lo (внутренний ) и проводной eth0, с локальным IP-адресом . Как вы уже возможно поняли, сам IP-адрес отображается после .
Стоит перечислить самые распространенные интерфейсы, чтобы можно было легко ориентироваться, какой адрес кому пренадлежит.
- — внутренний интерфейс, всегда 127.0.0.1 или localhost
- — проводной интерфейс
- — Wi-Fi-интерфейс
- — Point-to-Point Protocol, часто используется для VPN
Примеры использования
С теорией покончено, теперь перейдем к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.
Поиск текста в файлах
В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:
User:x:1000:1000:User,,,:/home/User:/bin/bash
А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:
$ grep -A4 «EE» /var/log/xorg.0.log
Выведет строку с вхождением и 4 строчки после нее.
$ grep -C2 «EE» /var/log/xorg.0.log
Выведет по две строки с верху и снизу от вхождения.
Options and Optimization for Find Command for Linux
find is configured to ignore symbolic links (shortcut files) by default. If you’d like the find command to follow and show symbolic links, just add the -L option to the command, as we did in this example.
find can help Linux find file by name. The Linux find command enhances its approach to filtering so that performance is optimised. The user can find a file in Linux by selecting three stages of optimisation-O1, -O2, and -O3. -O1 is the standard setting and it causes find to filter according to filename before it runs any other tests.
-O2 filters by name and type of file before carrying on with more demanding filters to find a file in Linux. Level -O3 reorders all tests according to their relative expense and how likely they are to succeed.
Поиск файлов через терминал. Команда locate
Команда locate считается устаревшей, т.к. она выполняет поиск не в реальном времени, подобно команде , а только по ранее созданной базе файлов. Вы вводите слово, которое вас интересует, и команда выдает все известные ей файлы, имя которых содержит заданное слово. Команда поддерживает работу с регулярными выражениями. Например, чтобы найти все файлы, в имени которых содержится слово users, необходимо выполнить:
Стоит заметить, что если файл появился в системе уже после создания базы, то он не будет найден.
Иногда вам может потребоваться обновить базу данных, к которой обращается . Для этого необходимо ввести команду (её запуск производится от имени суперпользователя):
Фильтрация файлов по глубине
По глубине ищут в тех случаях, когда документы точно находятся в каталогах, которые «лежат» в других папках. К примеру, каждый каталог (а всего их путь будет три уровня) содержит 10 файлов и 10 других подпапок Для создания подобной структуры необходимо выполнить команды:
cd
mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
cd ~/test
Далее можно искать по имени (find -name file1) или выполнить фильтрацию по глубине (find -maxdepth 2 -name file1).
find — синтаксис и зачем оно нужно
find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. С лохматых тысячелетий есть и поддерживаться почти всеми из них.
Базовый синтаксис ключей (забран с Вики):
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки
Опция `-name’ различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией `-iname’;
-type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;
-user — владелец: имя пользователя или UID;
-group — владелец: группа пользователя или GID;
-perm — указываются права доступа;
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);
-atime — время последнего обращения к файлу (в днях);
-amin — время последнего обращения к файлу (в минутах);
-ctime — время последнего изменения владельца или прав доступа к файлу (в днях);
-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);
-mtime — время последнего изменения файла (в днях);
-mmin — время последнего изменения файла (в минутах);
-newer другой_файл — искать файлы созданные позже, чем другой_файл;
-delete — удалять найденные файлы;
-ls — генерирует вывод как команда ls -dgils;
-print — показывает на экране найденные файлы;
-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);
-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;
-ok — перед выполнением команды указанной в -exec, выдаёт запрос;
-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;
-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;
-prune — используется, когда вы хотите исключить из поиска определённые каталоги;
-mount или -xdev — не переходить на другие файловые системы;
-regex — искать по имени файла используя регулярные выражения;
-regextype тип — указание типа используемых регулярных выражений;
-P — не разворачивать символические ссылки (поведение по умолчанию);
-L — разворачивать символические ссылки;
-empty — только пустые каталоги.
Примерно тоже самое, только больше и в не самом удобочитаемом виде, т.к надо делать запрос по каждому ключу отдельно, можно получить по
Результатам будет нечто такое из чего можно вычленять справку по отдельному ключу или команде (кликабельно):
В качестве развлечения можно использовать:
Дабы получить мануал из самой системы по базису и ключам (тоже кликабельно);
Немного о примерах использования. Точно так же, оттуда же и тп. Просто для понимания как оно работает вообще. Наиболее просто, конечно, осознать это потренировавшись в той же консоли на реальной системе.
Найти файлы по разрешениям
Параметр позволяет вам искать файлы на основе прав доступа к файлам.
Например, чтобы найти все файлы с разрешениями ровно внутри каталога , вы должны использовать:
Вы можете поставить перед числовым режимом знак минус или косую черту .
Когда в качестве префикса используется косая черта , то по крайней мере одна категория (пользователь, группа или другие) должна иметь по крайней мере соответствующие биты, установленные для соответствия файлу.
Рассмотрим следующий пример команды:
Приведенная выше команда будет соответствовать всем файлам с разрешениями на чтение, установленными для пользователя, группы или других.
Если в качестве префикса используется минус , то для соответствия файла необходимо установить хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:
Действия
Команда find дает вам результаты поиска, а затем возможность выполнить действия над ними. Вот несколько предопределенных действий:
Действие | Описание |
-delete | Удаляет файлы, соответствующие критериям поиска |
-ls | Показывает подробный вывод ls с размерами файлов и количеством inode |
Показывает полный путь к соответствующим файлам. Это действие по умолчанию, если не указано другое действие. | |
-exec | Выполняет следующую команду в каждой строке результатов поиска. |
Итак, если вы хотите найти все пустые файлы и удалить их, вы можете сделать это следующим образом:
Внимание: перед использованием действия удаления всегда можно безопасно запустить команду один раз с действием и подтвердить результаты. Действие является особенным
Это позволяет вам выполнить команду по вашему выбору в результатах поиска:
Действие является особенным. Это позволяет вам выполнить команду по вашему выбору в результатах поиска:
где:
- command — это команда, которую вы хотите выполнить для результатов поиска, например rm, mv или cp.
- {} представляет результаты поиска.
- Команда заканчивается точкой с запятой после обратной косой черты.
Итак, команду поиска и удаления всех пустых файлов можно записать так:
Вот еще один пример использования действия . Следующая команда копирует все .png изображения в каталог backup/images:
Поиск по типу
Что, если вы не заинтересованы в поиске файла по имени, а скорее будете предпочитать находить все файлы определенного типа и форматов? Некоторые из наиболее распространенных файловых дескрипторов:
- F — обычный файл
- D — каталог
- L — символическая ссылка
- C — символьные устройства
- B — блочные устройства
Теперь предположим, что вы хотите найти все блокирующие устройства (файл, который ссылается на устройство) в вашей системе. С помощью опции -type мы можем сделать это следующим образом:
Вышеприведенная команда привела бы к довольно большому количеству результатов (большая часть из которых указывала на запрещенное разрешение), но включала бы вывод, подобный этому:
Вуаля! Блокировать устройства.
Мы можем использовать тот же параметр, который может помочь нам найти файлы конфигурации. Например, вы хотите найти все «обычные» файлы, которые заканчиваются расширением conf. Тогда эта команда будет выглядеть примерно так:
Вышеупомянутая команда просматривала всю структуру каталогов, чтобы найти все обычные файлы, заканчивающиеся на .conf. Если вы знаете, что большинство ваших файлов конфигурации размещены в / etc, вы можете указать, это вот так:
Вышеупомянутая команда отобразит все ваши .conf-файлы из / etc (Рисунок 1).
Регулярные выражения в grep
Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах grep.
Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:
Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:
- Nov 10 01:12:55 gs123 ntpd: time reset +0.177479 s
- Nov 10 01:17:17 gs123 ntpd: synchronized to LOCAL(0), stratum 10
Поиск в конце строки, спецсимвол
- «$»: Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
- Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.
Найдем все строки которые содержат цифры:
$ grep -r «mydomain.com» /etc/apache2/
В выводе вы получите:
/etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost
/etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot /var/www/localhost/htdocs/zendsite
/etc/apache2/vhosts.d/zendsite_vhost.conf:
Здесь перед найденной строкой указано имя файла в котором она была найдена. Вывод имени файла легко отключить с помощью опции -h:
$ grep -h -r «zendsite» /etc/apache2/
DocumentRoot /var/www/localhost/htdocs/zendsite
Поиск по размеру файла
df -h /boot
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1014M 194M 821M 20% /boot
Найти обычные файлы определённого размера
Чтобы найти обычные файлы нужно использовать
-type f
find /boot -size +20000k -type f
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
Файлы бывают следующих типов:
— : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link
Подробности в статье —
«Файлы в Linux»
find /boot -size +10000k -type f
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img
То же самое плюс показать размер файлов
find /boot -size +10000k -type f -exec du -h {} \;
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
60M /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
21M /boot/initramfs-3.10.0-1160.el7.x86_64.img
13M /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
21M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
14M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
С теорией покончено, теперь перейдем к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.
ПОИСК ТЕКСТА В ФАЙЛАХ
В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:
В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:
А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:
ВЫВЕСТИ НЕСКОЛЬКО СТРОК
Например, мы хотим выбрать все ошибки из лог файла, но знаем что в следующей сточке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк, ошибки будем искать в Xorg.log по шаблону «EE»:
Выведет строку с вхождением и 4 строчки после нее.
Выведет целевую строку и 4 строчки до нее
Выведет по две строки с верху и снизу от вхождения.
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ В GREP
Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах grep. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:
Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:
Поиск в конце строки, спецсимвол «$»:
Найдем все строки которые содержат цифры:
Вообще, регулярные выражения grep это очень обширная тема, в этой статье я лишь показал несколько примеров, чтобы дать вам понять что это. Как вы увидели, таким образом, поиск текста в файлах grep становиться еще гибче. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим их и пойдем дальше.
РЕКУРСИВНОЕ ИСПОЛЬЗОВАНИЕ GREP
Если вам нужно провести поиск текста grep в нескольких файлах, размещенных в одном каталоге или подкаталогах, например, в файлах конфигурации Apache — /etc/apache2/ — используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займется поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:
В выводе вы получите:
Здесь перед найденной строкой указано имя файла в котором она была найдена. Вывод имени файла легко отключить с помощью опции -h:
ПОИСК СЛОВ В GREP
Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить grep искать по содержимому файлов в linux только те строки, которые выключают искомые слова с помощью опции -w:
ПОИСК ДВУХ СЛОВ
Можно искать по содержимому файла не одно слово, а целых несколько. Чтобы искать два разных слова используйте команду egrep:
КОЛИЧЕСТВО ВХОЖДЕНИЙ СТРОКИ
Утилита Grep может сообщить сколько раз определенная строка была найдена в каждом файле. Для этого используется опция -c (счетчик):
C помощью опции -n можно выводить номер строки в которой найдено вхождение, например:
Получим:
ИНВЕРТИРОВАННЫЙ ПОИСК В GREP
Команда grep linux может быть использована для поиска строк в файле Linux которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:
ВЫВОД ИМЕНИ ФАЙЛА
Вы можете указать grep выводить только имя файла в котом было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:
2. Примеры использования команды Grep
Теперь мы увидим, как использовать команду Grep в Linux.
Как использовать Grep в общем
Чтобы понять, как работает Grep, мы посмотрим в каталоге / etc / passwd все результаты, связанные с нашим пользователем:
grep solvetic / etc / passwd
В качестве дополнительного момента помните, что можно сказать, что grep игнорирует прописные и строчные буквы в результатах, для этого мы выполним следующее:
grep -i "resoltic" / etc / passwd
Grep идеально подходит для поиска определенных терминов в известных файлах, например, мы выполним следующий поиск:
grep Solvetic Solvetic.txt
Этот же термин можно искать в разных файлах одновременно, для этого мы будем использовать следующую строку:
grep Solvetic Solvetic.txt Solvetic1.txt
Более сокращенный способ сделать это — выполнить следующее:
grep solvetic *. *
Как использовать grep для перенаправления результатов в файл в Linux
Это полезно в тех случаях, когда мы должны выполнить административные задачи над файлами позже, поэтому можно перенаправить вывод команды grep в определенный файл, например, мы сделаем следующее:
grep Solvetic Solvetic.txt> Solvetic2.txt
Как использовать grep для поиска в каталогах
Благодаря параметру -r мы сможем найти значение в доступных подкаталогах, выполним следующее:
grep -r Solvetic / домашний / решающий
Как использовать grep для отображения номера строки
Для задач аудита или расширенной поддержки идеально отображать номер строки, в которой находится указанный шаблон поиска, для этого мы можем использовать параметр -n следующим образом. Там мы находим номер строки, где находится каждое значение.
grep -n Solvetic Solvetic.txt
Как использовать grep для выделения результатов
Поскольку мы знаем, что текст во многих случаях может сбить с толку, по этой причине решение состоит в том, чтобы выделить критерии поиска, которые фокусируют наше представление непосредственно на этой строке, для этого мы будем использовать параметр цвета, например:
grep -color Solvetic Solvetic.txt
Как использовать grep для отображения строк, начинающихся или заканчивающихся указанным шаблоном
Мы можем захотеть визуализировать только результаты строк, которые начинаются или заканчиваются критериями поиска, для этого, если мы хотим найти строки, которые начинаются, мы будем использовать следующую строку:
grep ^ Solvetic Solvetic.txt
Теперь, чтобы отобразить строки, которые заканчиваются, мы будем использовать следующее:
grep Solvetic $ Solvetic.txt
Как использовать grep для печати всех строк, не видя совпадающих
Если мы хотим увидеть все строки, кроме тех, где задано желаемое значение, мы должны использовать параметр -v следующим образом:
grep -v Solvetic Solvetic.txt
Как использовать grep с другими командами
Grep, как и многие команды Linux, можно использовать одновременно с другими командами для получения более четких результатов, например, если мы хотим развернуть процессы HTTP, мы будем использовать grep рядом с ps следующим образом:
ps -ef | grep http
Как использовать grep, чтобы посчитать, сколько слов повторяется в файле
Если мы хотим узнать, сколько раз шаблон повторяется в данном файле, мы будем использовать параметр -c:
grep -c Solvetic Solvetic.txt
Как использовать grep для обратного поиска
Хотя это звучит странно, это не что иное, как отображение в результате слов, которые мы не указываем, это достигается с помощью параметра -v:
grep -v Solvetic Solvetic2.txt
Как использовать grep для просмотра сведений об оборудовании
Ранее мы видели, что мы можем комбинировать grep с другими командами для отображения результата, ну, если мы хотим получить конкретные сведения об оборудовании, мы можем использовать cat с grep следующим образом:
cat / proc / cpuinfo | grep -i 'Модель'
Во всем мире мы узнали, как использовать команду grep для доступа к гораздо более конкретным результатам поиска в Linux.
Примеры использования команды find
Не забывайте, что по умолчанию аргументы суммируются: результаты соответствуют всем введенным критериям. Вы можете указать вариативное соответствие (OR) с помощью -o аргумента.
Показать все файлы в текущей директории
find .
Критерий поиска не задан — будет найдено все содержимое указанной директории. «.» — это текущая директория
Найти все директории содержащие «tmp»
find / -type d -name «tmp
«/» — root директория, т.е. поиск осуществляется по всей файловой системе
-type d — будут возвращены только директории
-name «tmp» — поиск будет осуществлен только по названию содержащиму «tmp»
Найти все имена файлов содержащие текст «ssh» в любом регистре и не включать в результаты директории
find / -type f -iname *ssh*
/ — root директория, т.е. поиск осуществляется по всей файловой системе
-type f — поиск по файлам
-iname — поиск по именам без учета регистра
*ssh* — поиск текста «ssh», который может быть находится в любом месте
Найти все имена файлов содержащие текст «ssh» в любом регистре и не включать в результаты директории, а также любые .gz файлы или файлы содержащие «sshd» в имени
find / -type f -iname *ssh* ! -name «*.gz» ! -name «sshd*»
! — логическое «NOT», т.е. исключение определенных результатов из возвращаемого результата предыдущего критерия
Найти все имена файлов содержащие текст «ssh» в любом регистре, которые являются .gz файлами или содержат «sshd*» в имени, игнорировать имена директорий
find / -type f -iname *ssh* -name «*.gz» -o -name «sshd*»
-o — логическое «OR», возвращает результаты указанные в дополнительном критерии
Найти все файлы не принадлежащие root пользователю
find / ! -user root -type f
Найти все файлы, которые были изменены за последние 2 дня
find / -ctime -2
-ctime -2 — последние два дня, вместо знака минус — можно было использовать +, тогда были возвращены все файлы и директории измененные до последних двух дней. Подобный подход используется также для atime и mtime. Чтобы указать минуты вместо дней можно воспользоваться аргументом cmin
Найти все файлы, размер которых больше больше 1 Мегабайта, но меньше 3 Мегабайт
find / -size +1M -size -3M
+ — знак плюс означает «больше чем», а — знак минус означает «меньше чем