Найти команду в linux (поиск файлов и каталогов)
Содержание:
- find командный синтаксис
- Узнать расположение файла
- Синтаксис grep
- Просматриваем Linux-файл в сжатом виде
- Use grep to Find a File in Linux Based on Content
- 2.3 Общие параметры и примеры команды grep
- 2.2, набор метасимволов регулярных выражений grep (базовый набор)
- Linux поиск по содержимому файлов командой locate
- Основное регулярное выражение
- Как просмотреть файл в Linux с прокруткой
- Поиск файла в Linux по фамилии командой whereis
- Find Files by Name using find command
- Поиск файла в Linux по имени командой locate
- Основная информация о Find
- Найти файлы по разрешениям
- Using Common find Commands and Syntax to Find a File in Linux
- Просмотр текстового файла в Linux полностью
- Информация о сети
- Сравнение файлов diff
- How to Find and Process a File in Linux
- Найти файлы по дате изменения
- Искать полные слова
- Поиск больших файлов командой find
- Действия
- Примеры использования
- Run Execute Command on Files That Return With ‘Find’ Command
- Поиск без учета регистра
find командный синтаксис
Общий синтаксис команды следующий:
- Атрибут управляет обработкой символических ссылок, параметрами отладки и методом оптимизации.
- Атрибут определяет начальный каталог или каталоги, в которых find будет искать файлы.
- Атрибут состоит из параметров, шаблонов поиска и действий, разделенных операторами.
Для поиска файлов в каталоге пользователь, вызывающий команду должен иметь разрешения на чтение в этом каталоге.
Давайте посмотрим на следующий пример:
- Параметр (параметры) указывает команде переходить по символическим ссылкам.
- (путь…) указывает каталог, в котором будет производиться поиск.
- (Выражение) указывает искать файлы, заканчивающиеся на (файлы JavaScript).
Узнать расположение файла
Узнать где находится файл lsb_release можно командой which lsb_release. Чтобы сразу получить
дополнительную информацию выполните
ls -lF $(which lsb_release)
-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*
Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл
исполняемый.
Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями
q (query) и f (file)
rpm -qf $(which lsb_release)
redhat-lsb-core-4.1-27.el7.centos.1.x86_64
Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)
interactive означает, что если файл с таким имененм существует, вас спросят прежде чем затирать его
cp -i /etc/hosts .
cp -i /etc/hosts .
cp: overwrite ‘./hosts’?
Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой
mkdir с опцией p (parent)
mkdir -p sites/heiheiru
ls -l sites
total 0
drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru
Синтаксис grep
Синтаксис команды выглядит следующим образом:
$ grep шаблон
Или:
$ команда | grep шаблон
- Опции — это дополнительные параметры, с помощью которых указываются различные настройки поиска и вывода, например количество строк или режим инверсии.
- Шаблон — это любая строка или регулярное выражение, по которому будет вестись поиск
- Файл и команда — это то место, где будет вестись поиск. Как вы увидите дальше, grep позволяет искать в нескольких файлах и даже в каталоге, используя рекурсивный режим.
Возможность фильтровать стандартный вывод пригодится,например, когда нужно выбрать только ошибки из логов или найти PID процесса в многочисленном отчёте утилиты ps.
Просматриваем Linux-файл в сжатом виде
Порой, в системе встречаются текстовые файлы в сжатом виде и формате gz. Это могут быть конфигурационные файлы ядра либо логи программ. Открыть такие файлы можно тоже через терминал, не прибегая к распаковке. Для этого существует множество аналогов вышеназванных утилит с той лишь разницей, что они имеют приставку z: zgerp, zegrep, zcat, zless.
Давайте откроем сжатый файл в Linux для просмотра:
zcat test.gz
Или выполним просмотр сжатого файла с прокруткой:
zless test
Вот, пожалуй, и всё. Теперь вы точно в курсе, как правильно открывать и просматривать текстовые файлы в терминале Linux.
Use grep to Find a File in Linux Based on Content
The command can only filter the directory hierarchy based on a file’s name and metadata. If you need to search based on the file’s content, use a tool like
. Consider the following example:
This searches every object in the current directory hierarchy () that is a file () and then runs the command for every file that satisfies the conditions. The files that match are printed on the screen (). The curly braces () are a placeholder for the match results. The are enclosed in single quotes () to avoid handing a malformed file name. The command is terminated with a semicolon (), which should be escaped () to avoid interpretation by the shell.
2.3 Общие параметры и примеры команды grep
Параметры | Описание |
---|---|
В то же время показать совпадающую линию вверх и вниз? Строка, например: grep -2, имя файла шаблона отображает две строки выше и ниже совпадающей строки одновременно. | |
Напечатайте номер блока перед соответствующей строкой. | |
Печатайте только количество совпадающих строк, а не совпадающее содержимое. | |
Извлеките шаблон из файла. Пустой файл содержит 0 шаблонов, поэтому ничего не соответствует. | |
При поиске нескольких файлов соответствующий префикс имени файла не отображается. | |
Не обращайте внимания на различия в регистре. | |
Отмените отображение и вернитесь только к состоянию выхода. 0 означает, что соответствующая строка была найдена. | |
Распечатать список файлов, соответствующих шаблону. | |
Распечатайте список файлов, которые не соответствуют шаблону. | |
Напечатайте номер строки перед соответствующей строкой. | |
Никакое сообщение об ошибке о файле, который не существует или не может быть прочитан, не отображается. | |
Обратный поиск и отображать только несопоставленные строки. | |
Если оно заключено в кавычки \ <и>, выражение ищется как слово. | |
Отображение информации о версии программного обеспечения. |
пример:
2.2, набор метасимволов регулярных выражений grep (базовый набор)
Режим | Описание | пример |
---|---|---|
Начало якорной линии | Такие как:Сопоставить всеНачало строки. | |
Конец якорной линии | Такие как:Сопоставить всеКонечная строка. | |
Соответствует не-символу новой строки | Такие как:соответствиеЗатем следует произвольный символ, а затем。 | |
Совпадение нуля или более предыдущих символов | Такие как:Сопоставляет все строки с одним или несколькими пробелами, за которыми следует grep.Используется вместе для обозначения любого персонажа. | |
Совпадение символа в указанном диапазоне | Такие как:соответствиес участием。 | |
Совпадение с символом не в указанном диапазоне | Такие как:Совпадение не содержитс участиемНачиная с буквыЛиния. | |
Пометить совпадающие символы | Такие как:,Быть отмеченным как。 | |
Прикрепить начало слова | Такие как:Матч содержитСтрока начального слова. | |
Закрепить конец слова | Такие как:Матч содержитСтрока конечного слова. | |
Повторяйте символы последовательно,раз | Такие как:Матчи включают 5 подрядЛиния. | |
Повторяйте символы последовательно,по крайней мерераз | Такие как:Не менее 5 матчей подрядЛиния. | |
Повторяйте символы последовательно,по крайней мереРаз, не болеераз | Такие как:Матч 5-10 подрядЛиния. | |
Соответствует буквенному и числовому символу, то есть | Такие как:Совпадать сЗатем следует ноль или более текстовых или числовых символов, затем。 | |
Перевернутая форма соответствует несловесному символу | Таких как: период, период и т. Д.Вы можете сопоставить несколько. | |
Блокировка слова | Такие как: Только матчКоторый может быть толькоЭто слово имеет пробелы с обеих сторон. |
Linux поиск по содержимому файлов командой locate
Поиск, производимый командой locate весьма быстр. Однако учитывайте тот факт, что системная база данных может быть не живой на момент осуществления операции. Механизм сканирования файловой системы, время его проведения и вобщем наличие такого инструмента может разниться в различных дистрибутивах Linux. Команда locate может быть полезна лишь при поиске файла по его имени. Однако для проверки текстового содержимого документов на вступление искомых данных нужно использовать другой инструмент.
Данная команда, как правило, работает быстрее и может с легкостью производить поиск (в широком смысле — стремление добиться чего-либо, найти что-либо; действия субъекта, направленные на получение нового или утерянного (забытого): новой информации (поиск информации), данных,) по всей файловой системы. Linux имеет специальную команду grep, какая принимает шаблон для поиска и имя файла (именованная область данных на носителе информации). В случае нахождения совпадений, они будут выведены в терминал. В всеобщем виде выражение можно составить как «grep шаблон_поиска имя_файла». Чтобы отыскать файлы с помощью команды locate, просто используйте следующий синтаксис:
К образцу, чтобы возвращать только файлы, содержащие сам запрос, вместо того чтобы вводить каждый файл, который содержит запрос в ведущих к нему каталогах, можно утилизировать флаг –b (чтоб искать только basename, базовое имя файла):
Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Любая из этих утилит имеет свои преимущества. Мы рассмотрели использование команд для поиска и фильтрации вывода бригад в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках. Несмотря на то, что команды find и locate сами по себе очень мощны, их действие возможно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте чистить их результаты при помощи команд wc, sort и grep.
Основное регулярное выражение
GNU Grep имеет три набора функций регулярных выражений : базовый, расширенный и Perl-совместимый.
По умолчанию интерпретирует шаблон как базовое регулярное выражение, где все символы, кроме метасимволов, на самом деле являются регулярными выражениями, которые соответствуют друг другу.
Ниже приведен список наиболее часто используемых метасимволов:
-
Используйте символ (каретка) для сопоставления выражения в начале строки. В следующем примере строка будет соответствовать только в том случае, если она встречается в самом начале строки.
-
Используйте символ (доллар), чтобы найти выражение в конце строки. В следующем примере строка будет соответствовать только в том случае, если она встречается в самом конце строки.
-
Используйте расширение (точка) символ, соответствующий любому одиночному символу. Например, чтобы сопоставить все, что начинается с затем имеет два символа и заканчивается строкой , вы можете использовать следующий шаблон:
-
Используйте (скобки) для соответствия любому одиночному символу, заключенному в квадратные скобки. Например, найдите строки, содержащие или « , вы можете использовать следующий шаблон:
-
Используйте для соответствия любому одиночному символу, не заключенному в квадратные скобки. Следующий шаблон будет соответствовать любой комбинации строк, содержащих , например , и т. Д., Но не будет соответствовать строкам, содержащим ,
Чтобы избежать специального значения следующего символа, используйте символ (обратная косая черта).
Как просмотреть файл в Linux с прокруткой
Бывает, что текстовый файл большой, поэтому его содержимое не помещается в один экран. Использовать в таком случае cat неудобно, зато есть less. Синтаксис у неё такой же:
less <путь_к_файлу/имя_файла>
Команда less обеспечит постраничный просмотр, что очень удобно. При этом:
1) less позволяет просматривать текст по определённому числу строк, для чего достаточно указать — (тире или минус) и количество строк:
less -5 myfile.txt
2) можно начать просмотр с конкретной строки в файле, указав + (плюс) и номер строки, с которой хотим начать чтение:
less +5 myfile.txt
Открыв текст, мы можем управлять его просмотром:
Поиск файла в Linux по фамилии командой whereis
Whereis возвращает место расположения кода (опция -b), ман-страниц (функция -m), и исходные файлы (опция -s) для указанной команды. Если опции не указываются, выводится вся вразумительная информация. Эта команда быстрее чем “find” но менее полная. Команда whereis имеет последующий формат:
покажет положение бинарного файла, исходников и man-страницы бригады find:
Вот и подошла к концу эта маленькая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее значительных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желанно знать всем системным администраторам.
Find Files by Name using find command
1. Find From the Current Directory
The command searches the current working directory for the file name ‘putty.txt’ However if a user wants the ‘find command’ to return only files and not the directories then one has to add -type f at the end of the command.
3. Find Files in /Home Directory Regardless of Case Sensitive
The command seeks to look for all files irrespective of the case, i.e., uppercase or lowercase in the /home directory. Therefore the result will display all results that match the file name.
4. Search All Directories for a Particular File
The command searches directories with a specific name such as ‘puttygen’ in the root folder. For example, the title to search is ‘puttygen,’ then the user has to type the below command.
Поиск файла в Linux по имени командой locate
Команда (Команда — группа лиц, объединённая общими мотивами, интересами) “locate” это альтернатива команде “find -name”. Команда find выискивает файлы в выбранной части файловой системы и процесс может быть не очень скорым. С другой стороны, команда locate ищет файлы в базе данный, созданной умышленно для этих целей /var/lib/locatedb, что происходит намного быстрее. Для обновления базы используется бригада updatedb. С помощью этой команды вы можете увидеть все файлы или каталоги, названия каких содержат искомый образец. Например, для поиска файла, содержащего в названии слово dog, заведите в командной строке:
Команда locate использует базу данных для определения местопребывания файлов или каталогов, содержащих в названии слово dog. Результаты поиска могут включать файл с именем dog, файл с названием bulldog.txt, каталог с названием /dogs/ и так далее. Чтобы узнать более о команде locate, обратитесь к ее man-странице (введите в командной строке man locate). При условии, что основа данных обновлена, команда locate осуществляет поиск очень быстро. Обновление основы данных команды locate происходит каждую ночь при помощи службы cron. cron — это маленькая программа, которая запускается в фоновом режиме и выполняет различные задачи (такие как обновление основы данных команды locate) через определенные промежутки времени.
Основная информация о Find
Команда find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
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. |
Просмотр текстового файла в Linux полностью
Чтобы вывести содержимое всего текстового файла, в Linux используют команду cat. Она отлично походит для вывода небольших текстовых файлов, к примеру, конфигурационных файлов. Синтаксис прост:
cat <путь_к_файлу/имя_файла>
Представьте, что надо посмотреть содержимое файла с названием myfile.txt:
cat myfile.txt
Также можно вместо имени прописать адрес (путь) к файлу:
cat /etc/passwd
Если нужно посмотреть несколько файлов сразу, это тоже не вызовет проблем:
Кроме того, при просмотре текстового файла в Linux мы можем отобразить номера строк. Для этого потребуется всего лишь использовать опцию -n:
cat -n file.txt
Команда nl функционирует аналогично команде cat с опцией -n, выводя номера строк в столбце слева.
nl file.txt
При необходимости вы можете сделать так, чтобы при выводе текстового файла в конце каждой строки отображался символ $:
cat -e test
Вывод будет следующим:
hello everyone, how do you do?$ $ Hey, am fine.$
Кроме cat, для вывода содержимого текстового файла в Linux используется команда tac. Её разница заключается в том, что она выводит содержимое файла в обратном порядке.
Информация о сети
Рассмотрим 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
Сравнение файлов diff
Утилита diff linux — это программа, которая работает в консольном режиме. Ее синтаксис очень прост. Вызовите утилиту, передайте нужные файлы, а также задайте опции, если это необходимо:
$ diff опции файл1 файл2
Можно передать больше двух файлов, если это нужно. Перед тем как перейти к примерам, давайте рассмотрим опции утилиты:
- -q — выводить только отличия файлов;
- -s — выводить только совпадающие части;
- -с — выводить нужное количество строк после совпадений;
- -u — выводить только нужное количество строк после отличий;
- -y — выводить в две колонки;
- -e — вывод в формате ed скрипта;
- -n — вывод в формате RCS;
- -a — сравнивать файлы как текстовые, даже если они не текстовые;
- -t — заменить табуляции на пробелы в выводе;
- -l — разделить на страницы и добавить поддержку листания;
- -r — рекурсивное сравнение папок;
- -i — игнорировать регистр;
- -E — игнорировать изменения в табуляциях;
- -Z — не учитывать пробелы в конце строки;
- -b — не учитывать пробелы;
- -B — не учитывать пустые строки.
Это были основные опции утилиты, теперь давайте рассмотрим как сравнить файлы Linux. В выводе утилиты кроме, непосредственно, отображения изменений, выводит строку в которой указывается в какой строчке и что было сделано. Для этого используются такие символы:
- a — добавлена;
- d — удалена;
- c — изменена.
К тому же, линии, которые отличаются, будут обозначаться символом <, а те, которые совпадают — символом >.
Вот содержимое наших тестовых файлов:
Теперь давайте выполним сравнение файлов diff:
В результате мы получим строчку: 2,3c2,4. Она означает, что строки 2 и 3 были изменены. Вы можете использовать опции для игнорирования регистра:
Можно сделать вывод в две колонки:
А с помощью опции -u вы можете создать патч, который потом может быть наложен на такой же файл другим пользователем:
Чтобы обработать несколько файлов в папке удобно использовать опцию -r:
Для удобства, вы можете перенаправить вывод утилиты сразу в файл:
Как видите, все очень просто. Но не очень удобно. Более приятно использовать графические инструменты.
How to Find and Process a File in Linux
The option runs commands against every object that matches the find expression. Consider the following example:
This filters every object in the current hierarchy () for files named and runs the command to modify the results’ file permissions.
The commands run with the are executed in the process’s root directory. Use to perform the specified command in the directory where the match resides. This may alleviate security concerns and produce a more desirable performance for some operations.
The or options run without further prompts. If you prefer to be prompted before action is taken, replace with or with .
Найти файлы по дате изменения
Команда также может искать файлы на основе их последнего изменения, доступа или времени изменения.
То же, что и при поиске по размеру, используйте символы плюс и минус для «больше чем» или «меньше чем».
Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в который заканчивается на и был изменен за последние пять дней:
Вот еще один пример фильтрации файлов по дате модификации с использованием опции . Приведенная ниже команда перечислит все файлы в каталоге которые были изменены или более дней назад:
Искать полные слова
При поиске строки отобразит все строки, в которых строка встроена в строки большего размера.
Например, если вы ищете «gnu», все строки, в которых «gnu» встроено в слова большего размера, такие как «cygnus» или «magnum», будут найдены:
Чтобы вернуть только те строки, в которых указанная строка представляет собой целое слово (заключенное в символы, отличные от слов), используйте параметр (или ).
Символы слова включают буквенно-цифровые символы ( , и ) и символы подчеркивания ( ). Все остальные символы считаются несловесными символами.
Если вы запустите ту же команду, что и выше, включая параметр , команда вернет только те строки, где включен как отдельное слово.
Поиск больших файлов командой find
Простой поиск
Команда find имеет опцию -size, которая позволяет указать размер файлов для поиска.
Найдем файлы, которые занимают больше 1Gb:
- Символ точка . после самой команды find, означает, что поиск нужно вести в текущей директории. Вместо точки вы можете указать, например, корневой раздел или путь до любой другой директории.
- -mount означает, что в процессе поиска не нужно переходить на другие файловые системы.
- -type f означает, что мы ищем файлы.
-
-size +1G означает, что нужно найти файлы, размер которых превышает 1Gb. Размер можно указать в различных форматах:
- b — блоки размером 512 байт. Числом указывается количество блоков.
- c — в байтах. Например: -size +128с
- w — в двухбайтовых словах
- k — в килобайтах
- M — в мегабайтах
- G — в гигабайтах
- 2>/dev/null используется, чтобы не показывать ошибки (например, если нет доступа к файлу).
В результате выполнения команды будет выведен список файлов без какой-либо дополнительной информации.
Вывод подробной информации
Добавим в вывод информацию о каждом файле и отсортируем список по размеру. Выполняем команду
Данная команда состоит из трех частей:
- Команда find ищет файлы, которые имеют размер больше 512 мегабайт.
- Результирующий список файлов передается команде xargs, которая, в свою очередь, запускает команду ls -lh над этим списком файлов. В результате получается таблица с файлами и информацией о файлах.
Опция -r, команды xarg, используется для того, чтобы не запускать команду ls, если команда find вернула пустой результат (не нашла файлов). Вместо -r можно использовать длинную запись — опцию —no-run-if-emptyОпция -d ’\n’ используется, чтобы разделять список файлов только по символу новой строки (по \n). А у нас так и есть — каждый файл на новой строке. Иначе неправильно будут обработаны файлы, в названии которых содержится пробел, так как по умолчанию команда xarg в качестве разделителя использует одновременно пробел, табуляцию или символ новой строки.
Примечание: Для BSD-систем вместо -d ’\n’ нужно использовать опцию −0, а у команды find вместо -print использовать -print0. Пример: find . -mount -type f -size +512M -print0 2>/dev/null | xargs -0 ls -lh | sort -k5,5 -h -r
- Затем результат команды ls передается команде sort, которая выполняет сортировку списка (таблицы) по пятой колонке — 5-я колонка содержит размеры файлов.Ключ -h означает, что результат нужно вывести в удобно-читаемом виде (human-readable).Ключ -r означает, что сортировку нужно выполнять по убыванию (reverse).
Действия
Команда find дает вам результаты поиска, а затем возможность выполнить действия над ними. Вот несколько предопределенных действий:
Действие | Описание |
-delete | Удаляет файлы, соответствующие критериям поиска |
-ls | Показывает подробный вывод ls с размерами файлов и количеством inode |
Показывает полный путь к соответствующим файлам. Это действие по умолчанию, если не указано другое действие. | |
-exec | Выполняет следующую команду в каждой строке результатов поиска. |
Итак, если вы хотите найти все пустые файлы и удалить их, вы можете сделать это следующим образом:
Внимание: перед использованием действия удаления всегда можно безопасно запустить команду один раз с действием и подтвердить результаты. Действие является особенным
Это позволяет вам выполнить команду по вашему выбору в результатах поиска:
Действие является особенным. Это позволяет вам выполнить команду по вашему выбору в результатах поиска:
где:
- command — это команда, которую вы хотите выполнить для результатов поиска, например rm, mv или cp.
- {} представляет результаты поиска.
- Команда заканчивается точкой с запятой после обратной косой черты.
Итак, команду поиска и удаления всех пустых файлов можно записать так:
Вот еще один пример использования действия . Следующая команда копирует все .png изображения в каталог backup/images:
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
Все три команды покажут одинаковый результат. Точка здесь означает текущую папку. В место неё можно указать любую другую.
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Поиск по имени в текущей папке:
Не учитывать регистр при поиске по имени:
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
Эта команда найдёт как php, так и html файлы.
6. Тип файла
По умолчанию find ищет как каталоги, так и файлы. Если вам необходимо найти только каталоги используйте критерий type с параметром d. Например:
Для поиска только файлов необходимо использовать параметр f:
Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:
Поиск файлов доступных владельцу только для чтения только в каталоге /etc:
Найти только исполняемые файлы:
Найти все файлы, принадлежащие пользователю:
Поиск файлов в Linux принадлежащих группе:
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
Найти файлы измененные в течении часа:
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
Найти самые маленькие файлы:
Самые большие:
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, для того чтобы найти все пустые папки и файлы, а затем выполнить ls для получения подробной информации о каждом файле используйте:
Удалить все текстовые файлы в tmp
Удалить все файлы больше 100 мегабайт:
Run Execute Command on Files That Return With ‘Find’ Command
Before using the executable command, users must be cautious as it can modify everything. The execute a command (-exec) allows users to take action on files found by using the ‘find command.’
28. Searching /Tmp Folder
So if a user wants to search the /tmp folder for the file name ‘trial’ and show the results on the screen, then one needs to execute the following find command:
29. Changing the Owner
It is an interesting example of the extent a user can use the execute command. The following command will return file trial.txt whose owner is Molly in /home folder. Then the -exec command will alter the ownership to Sam by running the chown command.
30. Change Permission Using -Exec
As it is a fact that possibilities with -exec is endless. A user can run the chmod command on files that return with the find command to change the file permissions to 755.
The above are some of the most common ‘find’ commands on Linux. There are many other possibilities that users can choose to and make file searching less time consuming and easy.
Поиск без учета регистра
По умолчанию чувствителен к регистру. Это означает, что символы верхнего и нижнего регистра рассматриваются как разные.
Чтобы игнорировать регистр при поиске, вызовите с параметром (или ).
Например, при поиске без какой-либо опции следующая команда не покажет никаких результатов, т.е. есть совпадающие строки:
Но если вы выполните поиск без учета регистра с использованием параметра , он будет соответствовать как заглавным, так и строчным буквам:
Указание «Зебра» будет соответствовать «зебре», «ZEbrA» или любой другой комбинации букв верхнего и нижнего регистра для этой строки.