Find command in linux with examples
Содержание:
- Опции — расширения GNU
- Как найти все файлы только для чтения
- Примеры использования locate
- Поиск по типу файла
- Простой пример использования команды find
- Выполнение и объединение команд
- Поиск по правам доступа
- Options and Optimization for Find Command for Linux
- Команда grep и регулярные выражения
- Поиск файла в Linux по фамилии командой whereis
- Поиск полных слов
- Process and Find Files Using the Find Command in Linux
- Найти файлы по разрешениям
- Поиск файлов по типу
- Поиск по владельцу и привилегиям
- Поиск по размеру
- Options and Optimizations for Finding Files in Linux Using the Command Line
- find командный синтаксис
- Рекурсивный поиск
- Use the ‘find’ Command to Locate a File in Linux
- How To Manage Files Using Plesk?
- Поиск файлов по дате изменения
- Примеры использования команды locate.
- Полезные команды whereis и which.
- Find Files by Name using find command
- Видео: How to Share File in Linux
- Expressions
- Итоги
Опции — расширения GNU
Опции
-A —after-context=ЧИСЛО_СТРОК
-B —before-context=ЧИСЛО_СТРОК
-C —context=ЧИСЛО_СТРОК
С этими тремя опциями мы уже познакомились в четвертой Хитрости, они позволяют посмотреть соседние строки. -A: количество строк после совпадения с ОБРАЗЦОМ,
-B: количество строк перед совпадением, и -C: количество строк вокруг совпадения.
Опция —colour
Выделяет найденные строки цветом. Значения КОГДА могут быть: never (никогда), always (всегда), или auto. Пример:
grep -o 'английскими' --color grep-ru.txt английскими
Опция -D ДЕЙСТВИЕ
—devices=ДЕЙСТВИЕ
Если исследуемый файл является файлом устройства, FIFO (именованным каналом) или сокетом, то следует применять эту опцию. ДЕЙСТВИЙ всего два: read (прочесть), и skip (пропустить). Если вы указываете ДЕЙСТВИЕ read (используется по умолчанию), то программа попытается прочесть специальный файл, как если бы он был обычным файлом; если указываете ДЕЙСТВИЕ skip, то файлы устройств, FIFO и сокеты будут молча проигнорированы.
Опция -d ДЕЙСТВИЕ
—directories=ДЕЙСТВИЕ
Если входной файл является директорией, то используйте эту опцию. ДЕЙСТВИЕ read (прочесть) попытается прочесть директорию как обычный файл (некоторые ОС и файловые системы запрещают это; тогда появятся соответствующие сообщения, либо директории молча пропустят). Если ДЕЙСТВИЕ skip (пропустить), то директории будут молча проигнорированы. Если ДЕЙСТВИЕ recurse (рекурсивно), то grep будет просматривать все файлы и субдиректории внутри заданного каталога рекурсивно. Это эквивалент опции -r, с которой мы уже познакомились.
—with-filename
Выдает имя файла для каждого совпадения с ОБРАЗЦОМ. Мы успешно делали это без всяких опций в Хитрости второй.
—no-filename
Подавляет вывод имен файлов, когда задано несколько файлов для исследования.
Опция -I
Обрабатывает бинарные файлы как не содержащие совпадений с ОБРАЗЦОМ; эквивалент опции —binary-files=without-match.
Опция —include=ОБРАЗЕЦ_имени_файла
При рекурсивном исследовании директорий обследовать только файлы, содержащие в своем имени ОБРАЗЕЦ_имени_файла.
Опция -m ЧИСЛО_СТРОК
—max-count=ЧИСЛО_СТРОК
Прекратить обработку файла после того, как количество совпадений с ОБРАЗЦОМ достигнет ЧИСЛА_СТРОК:
grep -m 2 'kot' kot.txt kot kotoroe
Опция -y
Синоним опции -i (не различать верхний и нижний регистр символов).
Опции -U и -u применяются только под MS-DOS и MS-Windows, тут нечего о них говорить.
Опция —mmap
Использует системный вызов mmap вместо системного вызова read. Может дать лучшую производительность, а может привести к ошибкам. Это для продвинутых пользователей.
Опция -Z
—null
Если в выводе программы имена файлов (например при опции -l), то опция -Z после каждого имени файла выводит нулевой байт вместо символа новой строки (как обычно происходит). Это делает вывод однозначным, даже если имена файлов содержат символы новой строки. Эта опция может быть использована совместно с такими командами как: find -print0, perl -0, sort -z, xargs -0 для обработки файловых имен, составленных необычно, даже содержащих символы новой строки.
(Хотел бы я знать, как можно включить символ новой строки в имя файла. Если кто знает, не поленитесь — сообщите мне.)
Опция -z
—null-data
Рассматривает ввод как набор строк, каждая из которых заканчивается не символом новой строки, а нулевым байтом. Как и предыдущая опция, используется совместно с вышеперечисленными командами для обработки экзотических имен файлов.
Как найти все файлы только для чтения
Как уже было сказано, команда find более многофункциональна, чем locate. Она может выполнять поиск по операционной системе и жесткий дискам, руководствуюсь в качестве параметров и фильтров разрешениями, выданными конкретному пользователю (его учетной записи). Для этого используются специальные маски прав в восьмеричной и других системах исчисления. К примеру, для нахождения данных с маской прав 0664, необходимо выполнить команду «$find . type f -perm 0664» без кавычек (они добавлены для удобства отображения команд).
Для поиска файлов с установленными флагами suid/guid выполняют такую строку «$find / -perm 2644». А вот поиск файлов, которые доступны только для чтения, выглядит следующим образом: «$ find /etc -maxdepth 1 -perm /u=r».
Важно! Исполняемые файлы имеют такие же разрешения и по ним удобно проводить поиск. Пользуясь масками команды find, а не поиском по расширению
Для нахождения только исполняемых файлов прописывают и выполняют «$find /bin -maxdepth 2 -perm /a=x».
Примеры использования locate
Если нужно найти файлы, соответствующие сразу нескольким шаблонам, используется опция -A. Шаблоны разделяются пробелом:
Опция -w включена по умолчанию, поэтому locate проверяет на соответствие шаблону не только имена файлов, но и названия папок, в которых эти файлы расположены. Например, если Документ1.ods находится по адресу Компьютер/БухалтерияДоки/ВсеДокументы/, он будет выведен командой при использовании шаблонов «Док», «Бух» и «Все». Для того, чтобы в результатах отображались только файлы с именами, в которых присутствует шаблон, применяется опция -b.
Для сравнения:
На скриншоте видно, как команда обрабатывает запросы с каждой из упомянутых опций.
Команда locate чувствительна к регистру. Если, к примеру, шаблон имеет вид «GrEEn», файлы с именами green и GREEN в процессе поиска будут игнорироваться. Для того, чтобы найти все документы, независимо от наличия строчных и заглавных букв в их названиях, используется опция -i.
Порой в названиях файлов встречаются буквы с диакритическими знаками (умлаутами, акутами, тремами и прочими). Эти документы не будут найдены, если в команде используется шаблон, состоящий из обычных букв. И наоборот, если в шаблоне есть буквы с диакритическими знаками, команда проигнорирует файлы, в названиях которых отсутствуют аналогичные символы. «Стереть» разницу между буквами с диакритическими знаками и без них можно при помощи опции -t.
По умолчанию команда locate осуществляет поиск в собственной базе данных mlocate.db, однако, умеет работать и с пользовательскими БД. Для этого предусмотрена следующая опция: —database.
Можно одновременно осуществлять поиск в нескольких базах данных, при этом названия файлов этих баз нужно разделять двоеточием:
Результаты будут выведены отдельно для каждой базы данных, в той же очерёдности, с которой базы данных были перечислены в запросе.
Файлы, добавленные в систему до обновления стандартной базы данных, не обнаруживаются командой locate. Также в результатах могут появляться уже несуществующие (удалённые) документы. Для того, чтобы актуализировать выдачу, используется опция -e.
Глядя на скриншот, легко сравнить результаты поиска с опцией -е и без неё.
Кроме того, можно обновить базу данных вручную, выполнив в терминале команду:
Поиск по типу файла
При помощи параметра «-type» можно указать тип необходимого файла. Это работает так:
find -type type_descriptor query
Вот список общих дескрипторов, при помощи которых можно указать тип файла:
-
f
: обычный файл; -
d
: каталог; -
l
: символическая ссылка; -
c
: символьные устройства; -
b
: блочные устройства.
К примеру, чтобы найти в системе все символьные устройства, нужно выполнить команду:
find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .
Чтобы найти все файлы, которые заканчиваются на.conf, используйте:
find / -type f -name «*.conf»
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .
Простой пример использования команды find
Для начала рассмотрим простой пример использования команды find для поиска на компьютере файлов с именем config. Мы будем искать файлы config, начиная с корневого каталога . Для этого вам нужно выполнять команду от имени пользователя root, чтобы иметь достаточно прав доступа, иначе получите сообщения «Permission denied». Итак, выполним команду:
Команда означает следующее: искать файлы с именем config (-name config), начиная с каталога (первый параметр команды find) и выводить имена файлов на экран (аргумент -print). Отмечу, что поиск рекурсивный, то есть при поиске просматриваются все вложенные директории. Как видите все просто. Теперь рассмотрим синтаксис команды и перейдем к обзору ее основных аргументов.
Выполнение и объединение команд
Утилита find позволяет выполнять любую вспомогательную команду на все найденные файлы; для этого используется параметр –exec. Базовый синтаксис выглядит так:
find параметры_поиска -exec команда_и_параметры {} \;
Символы {} используются в качестве заполнителя для найденных файлов. Символы \; используются для того, чтобы find могла определить, где заканчивается команда.
Для примера можно найти файлы с привилегиями 644 (как в предыдущем разделе) и изменить их привилегии на 664:
cd ~/test
find . -perm 644 -exec chmod 664 {} \;
Затем можно сменить привилегии каталога:
find . -perm 755 -exec chmod 700 {} \;
Чтобы связать несколько результатов, используйте команды -and или -or. Команда –and предполагается, если она опущена.
find . -name file1 -or -name file9
Поиск по правам доступа
Иногда у вас может возникать необходимость найти файлы, доступные для записи кому угодно или файлы, имеющие какие-либо другие «плохие» разрешения. Подобный поиск find может осуществлять при помощи различных опций. Простейшие из них — это операторы -readable, -writable и -executable, которые работают применительно к пользователю, запустившему find. Имейте ввиду, что в слишком древних версиях find эти опции отсутствуют.
Другой способ искать файлы определённым режимом доступа — использование опции -perm, позволяющей точно определять права доступа искомых файлов. Например, если вы хотите найти файлы, биты выполнения которых установлены для владельца и группы, используйте команду:
find -type f -perm -110
Здесь параметр «110» сообщает find набор битов доступа, а «-» заставляет игнорировать все остальные
Таким образом, если файл имеет ко всему прочему установленные биты чтения и записи, он также будет соответствовать критерию поиска, поскольку для find важно лишь то, что установлены указанные биты выполнения
Если вам необходимо точное совпадение с указанным режимом доступа, то уберите опцию «-».
А что, если вам необходимо найти файлы, исполняемые владельцем или группой? В это случае вместо «-» используйте «/»:
find -type f -perm 110
Поиск по правам доступа часто пригождается, хотя и не лишён некоторой сложности, и вам может потребоваться какое-то время, прежде, чем вы привыкните к его синтаксису. Особенно это касается новичков, которые ещё толком не разобрались с механизмом битов доступа файлов. В этом случае чтение man-страницы find особенно рекомендуется.
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.
Команда grep и регулярные выражения
Регулярные выражения (Regular Expressions) это система синтаксического разбора текстовых фрагментов по формализованному шаблону, основанная на системе записи ОБРАЗЦОВ для поиска. Проще говоря, регулярное выражение — тот же, уже привычный нам ОБРАЗЕЦ для поиска, только составленный по определенным правилам. Как математические формулы составляются при помощи набора операторов (плюс, минус, степень, корень и прочее), так и регулярные выражения конструируются при помощи различных операторов (?, *, +, {n} и прочие).
Тема регулярных выражений настолько обширна, что требует для своего освещения отдельной статьи; в данной статье мы не будем ее подробно разбирать. Скажу лишь, что существует несколько версий синтаксиса регулярных выражений: Базовый (basic) BRE, Расширенный (extended) ERE и регулярные выражения языка Perl.
—basic-regexp
Рассматривает ОБРАЗЕЦ как базовое регулярное выражение. Эта опция используется по умолчанию.
—extended-regexp
Рассматривает ОБРАЗЕЦ как расширенное регулярное выражение.
—perl-regexp
Рассматривает ОБРАЗЕЦ как регулярное выражение языка Perl.
Опция -F
—fixed-strings
Рассматривает ОБРАЗЕЦ как список «фиксированных выражений» (fixed strings — термин из области регулярных выражений), разделенных символами новой строки. Будет искать соответствия любому из них.
Кроме того, существуют две альтернативные команды EGREP и FGREP. Обе они соответствуют опциям -E и -F соответственно.
Опции —help и —version (-V) общеизвестны, и я не буду на них останавливаться.
Поиск файла в Linux по фамилии командой whereis
Whereis возвращает место расположения кода (опция -b), ман-страниц (функция -m), и исходные файлы (опция -s) для указанной команды. Если опции не указываются, выводится вся вразумительная информация. Эта команда быстрее чем “find” но менее полная. Команда whereis имеет последующий формат:
покажет положение бинарного файла, исходников и man-страницы бригады find:
Вот и подошла к концу эта маленькая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее значительных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желанно знать всем системным администраторам.
Поиск полных слов
При поиске строки будут отображаться все строки, в которых строка встроена в более крупные строки.
Например, если вы ищете «gnu», все строки, где «gnu» встроен в более крупные слова, такие как «cygnus» или «magnum», будут совпадать:
Чтобы вернуть только те строки, в которых указанная строка представляет собой целое слово (заключенное не в словах), используйте параметр (или ).
Символов слова включают в себя буквенно — цифровые символы ( , и ) и подчеркивание ( ). Все остальные символы рассматриваются как несловесные символы.
Если вы выполните ту же команду, что и выше, включая опцию, команда вернет только те строки, которые включены в качестве отдельного слова.
Process and Find Files Using the Find Command in Linux
The option runs commands against every object that matches the expression. Consider the following example:
This filters every object in the current hierarchy () for files named and runs the command to modify file permissions of the command’s results.
The example command runs and executes the option in the root directory of the process. Use to execute the specified command in the directory where the match resides. This may alleviate security concerns and produce better 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 .
Найти файлы по разрешениям
Параметр позволяет вам искать файлы на основе прав доступа к файлам.
Например, чтобы найти все файлы с разрешениями ровно внутри каталога , вы должны использовать:
Вы можете поставить перед числовым режимом знак минус или косую черту .
Когда в качестве префикса используется косая черта , то по крайней мере одна категория (пользователь, группа или другие) должна иметь по крайней мере соответствующие биты, установленные для соответствия файлу.
Рассмотрим следующий пример команды:
Приведенная выше команда будет соответствовать всем файлам с разрешениями на чтение, установленными для пользователя, группы или других.
Если в качестве префикса используется минус , то для соответствия файла необходимо установить хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:
Поиск файлов по типу
Иногда вам может потребоваться поиск файлов определенного типа, таких как обычные файлы, каталоги или символические ссылки. В Linux все это файл.
Для поиска файлов по их типу используйте опцию и один из следующих дескрипторов, чтобы указать тип файла:
- : обычный файл
- : каталог
- : символическая ссылка
- : символьные устройства
- : блочные устройства
- : FIFO
- : разъем
Например, чтобы найти все каталоги в текущем рабочем каталоге , вы должны использовать:
Распространенным примером может быть рекурсивное изменение разрешений на доступ к файлам на веб-сайте и на использование каталогов с помощью команды
Поиск по владельцу и привилегиям
С помощью команды find файлы можно искать по владельцу или правам на файл.
Для того используются параметры –user, –group, и -perm соответственно. Например, чтобы найти файл, принадлежащий пользователю с именем syslog, наберите:
find / -user syslog
Аналогично, чтобы вывести файлы, принадлежащие группе shadow, используйте:
find / -group shadow
Также можно искать файлы с особыми привилегиями.
Чтобы найти файл с определенными правами, используйте:
find / -perm 644
Данная строка выведет все файлы с такими правами.
Чтобы вывести все файлы, привилегии которых больше или равны указанным, используйте синтаксис:
find / -perm -644
Это вернет все файлы с дополнительными привилегиями (например, файл с привилегиями 744).
Поиск по размеру
Иногда при поиске файла в качестве критерия поиска бывает нужно использовать не только его имя, но и дополнительные атрибуты. Например, размер файла. Когда в вашей системе заканчивается свободное место в каком-то дисковом разделе и вам необходимо узнать, какие файлы занимают драгоценное дисковое пространство, при помощи find вы можете отыскать такие файлы и уже потом решить, за счёт чего можно высвободить необходимое дисковое пространство.
Для такого случая у find имеется опция -size, принимающая в качестве параметра размер, являющийся критерием поиска. Размер можно указывать начиная с байтов (b), заканчивая гигабайтами (G). Например, чтобы выполнить поиск файлов размером 100 килобайт, можно использовать команду:
find -size 100k
Однако такой вариант может не подойти в нашем случае. Более подходящим будет поискать файлы размеров больше (или меньше) заданного. Чтобы выполнить такой поиск, просто добавьте «+» или «-» к размеру, и find будет искать файлы большего или меньшего размера соответственно, чем указан. Например, следующая команда найдёт все файлы размеров более 100 килобайт:
find -size +100k
а эта — менее, чем 100 килобайт:
find -size -100k
Также при помощи find можно найти все пустые файлы:
find -empty -type f
Обратите внимание на указанную опцию -type с параметром «f», которая указывает find искать только обычные файлы. Если не указать это, то find выведет также и пустые каталоги
Options and Optimizations for Finding Files in Linux Using the Command Line
The default configuration for ignores
. If you want to follow and return symbolic links, add the option to the command, as shown below:
This command enables the maximum optimization level () and allows to follow symbolic links (). searches the entire directory tree beneath for files that end with .
optimizes its filtering strategy to increase performance. Three user-selectable optimization levels are specified as , , and . The optimization is the default and forces to filter based on filename before running all other tests.
Optimization at the level prioritizes filename filters, as in , and then runs all file-type filtering before proceeding with other more resource-intensive conditions. Level optimization allows to perform the most severe optimization and reorders all tests based on their relative expense and the likelihood of their success.
Command | Description |
---|---|
Filter based on filename first (default). | |
File name first, then file-type. | |
Allow to automatically re-order the search based on efficient use of resources and likelihood. of success | |
Search current directory as well as all sub-directories X levels deep. | |
Search without regard for text case. | |
Return only results that do not match the test case. | |
Search for files. | |
Search for directories. |
find командный синтаксис
Общий синтаксис команды следующий:
- Атрибут управляет обработкой символических ссылок, параметрами отладки и методом оптимизации.
- Атрибут определяет начальный каталог или каталоги, в которых find будет искать файлы.
- Атрибут состоит из параметров, шаблонов поиска и действий, разделенных операторами.
Для поиска файлов в каталоге пользователь, вызывающий команду должен иметь разрешения на чтение в этом каталоге.
Давайте посмотрим на следующий пример:
- Параметр (параметры) указывает команде переходить по символическим ссылкам.
- (путь…) указывает каталог, в котором будет производиться поиск.
- (Выражение) указывает искать файлы, заканчивающиеся на (файлы JavaScript).
Рекурсивный поиск
Для рекурсивного поиска шаблона, используйте опцию (или ). Когда эта опция используется, будет выполняться поиск по всем файлам в указанном каталоге, пропуская символические ссылки, которые встречаются рекурсивно.
Чтобы перейти по всем символическим ссылкам , вместо этого используйте опцию (или ).
Вот пример, показывающий, как искать строку во всех файлах в каталоге:
Вывод будет включать совпадающие строки с префиксом полного пути к файлу:
Если вы используете опцию, перейдите по всем символическим ссылкам:
Обратите внимание на последнюю строку вывода ниже. Эта строка не печатается, когда вызывается из-за того, что файлы в каталоге Nginx являются символическими ссылками на файлы конфигурации внутри каталога.
Use the ‘find’ Command to Locate a File in Linux
The command used to search for files is called find.
The basic syntax of the find command is as follows:
The currently active path marks the search location, by default. To search the entire drive, type the following:
If, however, you want to search the folder you are currently in, use the following syntax:
When you search by name across the entire drive, use the following syntax:
- The first part of the find command is the find command.
- The second part is where to start searching from.
- The next part is an expression that determines what to find.
- The last part is the name of the file to find.
To access the shell (sometimes called the terminal window) in most distributions, click the relevant icon or press Ctrl+Alt+T.
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.
Поиск файлов по дате изменения
также может искать файлы на основе их последнего изменения, доступа или изменения времени.
То же, что и при поиске по размеру, используйте символы «плюс» и «минус» для «больше чем» или «меньше чем».
Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в каталоге, который заканчивается и был изменен за последние пять дней с помощью:
Вот еще один пример фильтрации файлов по дате изменения с использованием этой опции. Команда ниже выведет список всех файлов в каталоге, которые были изменены или несколько дней назад:
Примеры использования команды locate.
Давайте найдем все файлы с расширением .exe:
Если мы хотим вывести результаты поиска в одну строку, тогда используем следующую опцию -0 (это тире и ноль)
Вот результат:
Но если мы ищем файл с названием «file», то не найдутся файлы с именами в другом регистре: File, FILE и т.д.
Чтобы поиск сделать регистронезависимым, то нужно использовать следующую опцию -i, то есть:
Если мы хотим узнать просто количество файлов, имеющих в имени «file», или количество файлов с определенным расширением, к примеру .exe, то нужно указать опцию -c:
Что означает, что в системе 10 файлов имеют расширение .exe.
Если мы хотим ограничить число выводимых файлов в поиске по заданному параметру, мы ставим опцию -n и число:
То есть, данная команда с опцией -n 2 выведет нам только 2 первых найденных файла:
И напоследок, locate лучше выполнять с опцией -e, тогда будут отображены файлы, которые существуют в системе. Даже тогда, когда запись о файле находится в базе данных, все равно будет осуществлена проверка физического нахождения файла в системе:
Полезные команды whereis и which.
У нас установлены программы в системе и чтобы узнать размещение бинарных файлов, исходных кодов и руководств, относящихся к установленной программе, можно выполнить команду whereis. Для примера найдем информацию о пакете google-chrome:
Команда же which отображает полный путь к установленной программе. Также в качестве примера возьмем google-chrome:
Результат выполнения данных команд:
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.
Kupfer
Kupfer — это простой лаунчер, доступный в репозиториях таких дистрибутивов, как Debian, Ubuntu, Fedora и Arch Linux. Данная утилита поставляется с множеством плагинов, так что из Kupfer можно сделать прекрасный поисковый инструмент, который можно назвать GUI для утилиты locate. Этот инструмент может также создать свой каталог индексируемых директорий. После ввода ключевого слова Kupfer предложит некоторое количество действий, которое можно выполнить. Количество этих действий напрямую зависит от плагинов, которые вы активируете или деактивируете в настройках лаунчера.
KRunner
KRunner — это стандартный лаунчер графического окружения KDE Plasma. Чтобы открыть этот лаунчер, нажмите Alt + F2. Если вы хотите настроить KRunner, то зайдите в раздел Plasma Search в системных настройках. В KRunner также поддерживаются и плагины, которые помогут вам найти не только какие-либо файлы, но и вы сможете взаимодействовать с другими Linux приложениями и элементами окружения рабочего стола KDE Plasma. С помощью плагинов вы сможете искать статьи на Википедии, видео на YouTube, недавние документы и многое другое.
Albert
Разработчики данного лаунчера были вдохновлены лаунчером Alfred из macOS. Albert является достаточно простым приложением, но плагины превращают его в мощную утилиту. Плагин «Files» индексирует директории, а сам лаунчер Albert производит поиск по индексу. Также имеется возможность поиска файлов при неполном его названии в запросе, еще вы можете выбрать типы файлов, которые будут проиндексированы. Чтобы выполнить поиск папки в Linux или какого-нибудь файла, запустите Albert сочетанием клавиш и начните вводить свой поисковый запрос.
Mutate
Это еще один лаунчер, разработчики которого были вдохновлены Alfred из macOS. Правда Mutate не имеет такого количества опций, как Albert, но он все равно имеет возможность поиска по типу и обычного файлового поиска. Также вы можете искать файлы по имени или же по расширению. Диалог настроек Mutate несколько необычен, так как он показывает, какие скрипты используются. Кроме ключевых слов и сочетаний клавиш вы настроить ничего не сможете.
Expressions
The most common expression you will use is -name, which searches for the name of a file or folder.
There are, however, other expressions you can use:
- -amin n: The file was last accessed +/- n minutes ago, depending on how you enter the time.
- -anewer: Takes another file as reference to find any files that were accessed more recently and the reference file.
- -atime n: The file was last accessed more/fewer than n days ago, depending on the how you enter the target time (n).
- -cmin n: The file was last changed n minutes ago, depending on how you enter the target time (n).
- -cnewer: Takes another file as reference to find any files that were accessed more recently and the reference file.
- -ctime n: The file was last accessed more/fewer than n days ago, depending on the how you enter the target time (n).
- -empty: The file is empty.
- -executable: The file is executable.
- -false: Always false.
- -fstype type: The file is on the specified file system.
- -gid n: The file belongs to group with the ID n.
- -group groupname: The file belongs to the named group.
- -ilname pattern: Search for a symbolic link but ignore the case.
- -iname pattern: Search for a file but ignore the case.
-inum n: Search for a file with the specified inode.
-ipath path: Search for a path but ignore the case.
-iregex expression: Search for an expression but ignore the case.
-links n: Search for a file with the specified number of links.
-lname name: Search for a symbolic link.
-mmin n: The file was last accessed +/- n minutes ago, depending on how you enter the time.
-mtime n: The file was last accessed more/fewer than n days ago, depending on the how you enter the target time (n).
-name name: Search for a file with the specified name.
-newer name: Search for a file edited more recently than the reference file given.
-nogroup: Search for a file with no group id.
-nouser: Search for a file with no user attached to it.
-path path: Search for a path.
-readable: Find files that are readable.
-regex pattern: Search for files matching a regular expression.
-type type: Search for a particular type. Type options include:
- -type d: Directoris
- -type f: Files
- -type l: Symlinks
-uid uid: The file numeric user id is the same as the uid.
-user name: The file is owned by the user that is specified.
-writable: Search for files that can be written to.
Итоги
Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Каждая из этих утилит имеет свои преимущества.
Несмотря на то, что команды find и locate сами по себе очень мощны, их действие можно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте фильтровать их результаты при помощи команд wc, sort и grep.
Вероятно, Вам знакома такая проблема: Есть файл, и Вы не помните, куда его положили.
В этом случае удобна команда find . Как ее использовать? Конечно, к этой утилите поставляется большая man-страница, но мы рассмотрим некоторые типичные случаи. Просмотреть дерево каталогов, начиная с текущего, и найти файл lostfile.txt:
Если Вы ищете в большом дереве каталогов, команда find может работать довольно медленно. Иногда удобнее использовать команду locate . Она не ищет файл непосредственно в файловой системе, а просматривает свою базу данных. Такой метод намного быстрее, но база данных может устареть. В некоторых дистрибутивах эта база модифицируется каждую ночь. Вы можете время от времени вручную выполнять команду updatedb , чтобы ее модифицировать. locate ищет подстроки:
Допустимое количество орфографических ошибок зависит от длины имени файла, но может быть установлено с помощью опции -t. Чтобы разрешить максимум 2 ошибки и использовать служебный символ просто наберите: