Поиск в Linux с помощью find. Ищем файлы в Linux Linux как найти файл
Необходимость поиска файлов может возникнуть практически в каждой операционной системе, которая позволяет работать с файловой системой. Классическим примером для нас послужит операционная система Linux, которую мы будем использовать в консольном режиме. Давайте рассмотрим возможности поиска файлов в системе посредством консоли. Для поиска файлов в системе Linux есть команда find, которая позволяет производить довольно гибкий поиск, позволяя задавать дополнительные критерии поиска. Рассмотрим возможности данной команды подробнее.
Синтаксис команды find:
Find путь –опции
В качестве пути указывается директория, в которой необходимо производить поиск. К примеру, это могут быть значения такого вида:
. – текущий каталог
/ — корневой каталог
~ — домашний каталог
После указания пути так указываются опции поиска. С виду всё запутано, но на самом деле сложностей тут нет.
Основные опции:
-name
- поиск по имени, задается шаблон поиска;
-user
- поиск файлов принадлежащих конкретному пользователю;
-group
- поиск файлов принадлежащих конкретной группе;
-perm
- поиск файлов по режиму доступа;
-type
- поиск файлов по типу, список типов:
- b - специальный блочный файл;
- d - каталог;
- c - специальный символьный файл;
- f - обычный файл;
- l - символическая ссылка;
- p - именованный канал;
- s - сокет.
-size n
- поиск файлов с размером n единиц;
-mtime -n +n
- поиск файлов по дате изменения, менее (-) или более (+) дней назад.
Попробуем произвести поиск файлов, имитируя различные ситуации.
Найдем файлы на съемном устройстве, подключенном к USB, и предварительно смонтированном в системе.
Поиск файлов по расширению:
$ find /mnt/usb -name "*.mp3" -print
В результате выполнения данной команды будет произведен поиск в каталоге /mnt/usb
– это каталог, в который смонтировано устройство. Поиск будет произведен по всем файлам (*), имеющим расширение .mp3
.
Маску поиска можно менять довольно гибко, к примеру, можно задать ключевое слово, с которого начинается имя файла, и произвести по нему поиск.
Поиск файлов по начальному ключевому слову:
$ find ~ -name "config*" –print
В результате будет показан список найденных файлов, начинающихся с ключевого слова config
.
Одна из сильных сторон команды это возможность поиска согласно регулярному выражению. Для демонстрации произведем поиск файлов, начинающихся с латинских букв от «a» до «j».
Поиск файлов по шаблону регулярного выражения:
$ find / -name "*" –print
Согласно указанному шаблону будет произведен поиск по всех файлов в системе, начинающихся с букв от «a» до «j».
Каждый более или менее знакомый с системами Linux знает, что режимы доступа к файлам дело весьма важное. Иногда бывает нужно найти файлы, имеющие конкретные заданные права, для этих целей можно воспользоваться поиском с опцией –perm .
Поиск файлов с режимом доступа 755:
$ find . -perm 775 –print
Таким же образом можно произвести более гибкий поиск. Давайте найдем файлы по группе пользователей, для которых есть полный доступ.
Поиск файлов с правами для группы:
$ find . -perm -070 –print
Знак дефиса может быть заменен на знак плюса, это позволит произвести поиск файлов, у которых установлен хотя бы один из заданных битов разрешений, остальные биты при этом будут проигнорированы.
В следующем примере рассмотрим поиск файлов принадлежащих определенному пользователю или группе.
Поиск файлов определенного пользователя:
$ find / -user admin –print
В результате поиска будет найдены файлы принадлежащие пользователю admin .
Поиск файлов, принадлежащие определенной группе пользователей:
$ find / -group bots –print
Будут найдены файлы, которые принадлежат группе пользователей bots . Кроме этого можно производить поиск файлов, владельцами которых являются несуществующие пользователи или группы:
$ find / -nouser –print $ find / -nogroup –print
Возможность поиска определенных типов файлов так же является немаловажным функционалом. К примеру, если есть необходимость найти все символические ссылки в конкретной директории.
Поиск символических ссылок:
$ find /etc -type l –print
Поиск будет произведен в директории /etc, в которой будут отбираться все символические ссылки.
Бывает необходимо просмотреть список вложенных директорий, в каком либо каталоге, для таких задач есть следующая команда.
Просмотр вложенных директорий в каталоге:
$ find /mnt/usb -type d –print
На экран будет показан список директорий присутствующих в каталоге /mnt/usb . Теперь перейдем к следующей опции, это возможность поиска файлов установленного размера.
Поиск файлов по размеру:
$ find . -size 2000k –print
Будет произведен поиск файлов размером 2000 килобайт, размеры можно указывать и в мегабайтах, для этого вместо буковки «k» следует указать букву «M».
В качестве следующего примера мы будем использовать возможность поиска файлов по времени его модификации. Для этих целей мы воспользуемся опцией –mtime .
Поиск файлов, измененных за последние 2 дня:
$ find /var/www/html -mtime +2 –print
Поиск будет производиться в директории /var/www/html , и будут искаться файлы которые изменялись в течении последних 2-х дней. Пожалуй, одна из немаловажных и удобных опций поиска. Так же можно производить поиск по дате модификации с обратным условием. Давайте попробует найти файлы в директории, которые не изменялись в течении 5-ти дней.
Поиск файлов, не изменявшихся в течении 5-ти дней:
$ find /var/www/html -5 –print
На этом пока всё, надеюсь, данные примеры вам помогли разобраться с данной командой. Её удобство представлено наглядно, и знать о её возможностях не будет лишним, особенно если вы собираетесь в дальнейшем работать с системой Linux. Навыки грамотного поиска файлов значительно экономит ваше личное время, а как известно время бесценно. Успехов в труде!
Во время работы в любой операционной системе иногда возникает потребность в использовании инструментов для быстрого поиска того или иного файла. Актуально это и для Linux, поэтому ниже будут рассмотрены все возможные способы поиска файлов в этой ОС. Представлены будут как инструменты файлового менеджера, так и команды, используемые в «Терминале» .
Если вам необходимо задать множество параметров поиска для нахождения нужного файла, то команда find незаменима. Перед рассмотрением всех ее вариаций стоит пройтись по синтаксису и опциям. Синтаксис она имеет следующий:
find путь опция
где путь - это директория, в которой будет происходить поиск. Есть три основных варианта указания пути:
- / — поиск по корневой и прилегающим к ней директориям;
- ~ — поиск по домашней директории;
- ./ — поиск в директории, в которой пользователь находится в настоящий момент.
Также вы можете указать путь непосредственно к самому каталогу, в котором предположительно расположен файл.
Опций у find очень много, и именно благодаря им можно осуществить гибкую настройку поиска, задав необходимые переменные:
- -name - проводить поиск, беря за основу имя искомого элемента;
- -user - искать файлы, которые относятся к определенному пользователю;
- -group - проводить поиск по определенной группе пользователей;
- -perm - показывать файлы с указанным режимом доступа;
- -size n - искать, беря за основу размер объекта;
- -mtime +n -n - проводить поиск файлов, которые изменялись более (+n ) или менее (-n ) дней назад;
- -type - искать файлы определенного типа.
Типов искомых элементов тоже много. Вот их список:
- b - блочный;
- f - обычный;
- p - именованный канал;
- d - каталог;
- l - ссылка;
- s - сокет;
- c - символьный.
После детального разбора синтаксиса и опций команды find можно переходить непосредственно к наглядным примерам. Ввиду обилия вариантов использования команды, приведены примеры будут не для всех переменных, а лишь для наиболее используемых.
Способ 1: Поиск по имени (опция -name)
Чаще всего пользователи для осуществления поиска по системе используют опцию -name , так что именно с нее и начнем. Разберем несколько примеров.
Поиск по расширению
Допустим, вам нужно найти в системе файл с расширением «.xlsx» , который находится в директории «Dropbox» . Для этого необходимо использовать следующую команду:
find /home/user/Dropbox -name "*.xlsx" -print
Из ее синтаксиса можно сказать, что поиск проводится в директории «Dropbox» («/home/user/Dropbox» ), а искомый объект должен быть с расширением «.xlsx» . Звездочка свидетельствует о том, что поиск будет проведен по всем файлам этого расширения, не беря во внимание их название. «-print» указывает на то, что результаты поиска будут выведены на экран.
Поиск по имени файла
Например, вы хотите отыскать в директории «/home» файл с названием «lumpics» , но расширение его неизвестно. В таком случае нужно выполнить следующее:
find ~ -name "lumpics*" -print
Как можно заметить, здесь используется символ «~» , который означает, что поиск будет проходить в домашней директории. После опции «-name» указано имя искомого файла («lumpics*» ). Звездочка в конце означает что поиск будет проходить только по имени, не учитывая расширение.
Поиск по первой букве в имени
Если вы помните только первую букву, с которой начинается название файла, то существует специальный синтаксис команды, который вам поможет его отыскать. Например, вы хотите найти файл, который начинается с буквы от «g» до «l» , и вы не знаете в каком каталоге он находится. Тогда вам необходимо выполнить следующую команду:
find / -name "*" -print
Судя по символу «/», что идет сразу после основной команды, поиск будет проведен, начиная с корневого каталога, то есть во всей системе. Далее, часть «*» означает, что искомое слово будет начинаться с определенной буквы. В нашем случае от «g» до «l» .
К слову, если вы знаете расширение файла, то после символа «*» можете его указать. Например, вам надо найти тот же файл, но вы знаете, что он имеет расширение «.odt» . Тогда можно использовать такую команду:
find / -name "*.odt" -print
Способ 2: Поиск по режиму доступа (опция -perm)
Иногда необходимо найти объект, имя которого вы не знаете, но знаете каким режимом доступа он обладает. Тогда вам нужно применять опцию «-perm» .
Пользоваться ей довольно просто, нужно всего лишь указать место поиска и режим доступа. Вот пример такой команды:
find ~ -perm 775 -print
То есть поиск проводится в домашнем разделе, а искомые объекты будут обладать доступом 775 . Также вы можете перед этим числом прописать символ «-», тогда найденные объекты будут иметь биты разрешений от нуля до указанного значения.
Способ 3: Поиск по пользователю или группе (опции -user и -group)
В любой операционной системе есть пользователи и группы. Если вы хотите найти объект, принадлежащий одной из этих категорий, то для этого можете использовать опцию «-user» или «-group» , соответственно.
Поиск файла по имени его пользователя
Например, вам нужно найти в директории «Dropbox» файл «Lampics» , но вы не знаете как он называется, а знаете только что он принадлежит пользователю «user» . Тогда вам нужно выполнить следующую команду:
find /home/user/Dropbox -user user -print
В данной команде вы указали необходимую директорию (/home/user/Dropbox ), указали что нужно искать файл, принадлежащий пользователю (-user ), и указали, какому именно пользователю этот файл принадлежит (user ).
Поиск файла по названию его группы
Выполнить поиск файла, который принадлежит определенной группе, точно так же просто - вам нужно всего-навсего заменить опцию «-user» на опцию «-group» и указать название этой группы:
find / -groupe guest -print
То есть вы указали, что хотите отыскать в системе файл, относящийся к группе «guest» . Поиск будет происходить по всей системе, об этом свидетельствует символ «/» .
Способ 4: Поиск файла по его типу (опция -type)
Найти какой-то элемент в Linux определенного типа довольно просто, вам нужно всего лишь указать соответствующую опцию (-type ) и обозначить тип. В начале статьи были перечислены все обозначения типов, которые можно применять для поиска.
Например, вы хотите отыскать все блочные файлы в домашней директории. В этом случае ваша команда будет выглядеть так:
find ~ -type b -print
Соответственно, вы указали что проводите поиск по типу файла, о чем свидетельствует опция «-type» , а далее определили его тип, поставив символ блочного файла — «b» .
Точно так же вы можете вывести на экран все каталоги в нужной директории, вписав в команду символ «d» :
find /home/user -type d -print
Способ 5: Поиск файла по размеру (опция -size)
Если из всей информации о файле вы знаете только его размер, то даже этого может оказаться достаточно, чтобы найти его. Например, вы хотите в определенной директории найти файл размером 120 Мб, для этого выполните следующее:
find /home/user/Dropbox -size 120M -print
Как можно заметить, нужный нам файл был найден. Но если вы не знаете, в какой директории он находится, можно провести поиск по всей системе, указав корневую директорию в начале команды:
find / -size 120M -print
Если вы знаете размер файла приблизительно, то и на этот случай есть специальная команда. Вам нужно прописать в «Терминале» то же самое, только перед указанием размера файла поставить знак «-» (если нужно найти файлы меньше указанного размера) или «+» (если размер искомого файла будет больше указанного). Вот пример такой команды:
find /home/user/Dropbox +100M -print
Способ 6: Поиск файла по дате изменения (опция -mtime)
Бывают случаи, когда удобнее всего проводить поиск файла по дате его изменения. В Linux для этого применяется опция «-mtime» . Пользоваться ей довольно просто, рассмотрим все на примере.
Допустим, в папке «Изображения» нам нужно найти объекты, которые подвергались изменениям последние 15 суток. Вот что нужно прописать в «Терминале» :
find /home/user/Изображения -mtime -15 -print
Как можно заметить, эта опция показывает не только файлы, изменявшиеся за указанный срок, но и папки. Работает она и в обратную сторону - вы можете найти объекты, которые были изменены позже указанного срока. Для этого нужно перед цифровым значением вписать знак «+» :
find /home/user/Изображения -mtime +10 -print
GUI
Графический интерфейс во многом облегчает жизнь новичкам, которые только установили дистрибутив Linux. Данный метод поиска очень похож на тот, что осуществляется в ОС Windows, хотя и не может дать всех тех преимуществ, что предлагает «Терминал» . Но обо всем по порядку. Итак, рассмотрим, как сделать поиск файлов в Linux, используя графический интерфейс системы.
Способ 1: Поиск через меню системы
Сейчас будет рассмотрен способ поиска файлов через меню системы Linux. Проводимые действия будут выполняться в дистрибутиве Ubuntu 16.04 LTS, однако инструкция общая для всех.
Проблема с поиском нужных файлов или папок была, есть, и будет актуальна всегда. Люди постоянно забывают, куда именно они сохранили нужный файл Хрень.doc, или Супер-музня.mp3. Поэтому независимо от вашей операционной системы, поиск файлов или директорий, будет всегда востребован хоть на Linux, на Windows, или MacOS X. Просто инструменты поиска будут разные. Поиск в Linux можно разделить на две категории: графический и консольный. Начнем с гордости всех луниксоидов — с Терминала. Для поиска в Linux есть замечательная программа, под названием find
.
Формат написания команды find:
find путь к директории, в которой нужно сделать поиск -опции(ключи)
где путь – это каталог, в котором произвести поиск. Можно указывать следующие пути:
.
– произвести поиск в текущем каталоге;
/
– произвести поиск от корневого каталога, т.е. во всей системе;
~
– произвести поиск в домашнем каталоге.
Хотя путь конечно же может, и будет отличаться. Вверху лишь указаны стандартные пути.
Итак, самые главные опции команды find выглядят так:
—name
— поиск файлов по имени;
—user
— поиск файлов, которые принадлежат указанному пользователю;
—group
— поиск файлов, которые принадлежат указанной группе;
—perm
— поиск файлов с указанным режимом доступа;
—type
— поиск файлов какого-нибудь типа.
Типов тоже достаточно:
- b – специальный блочный файл;
- d – каталог;
- c – специальный символьный файл;
- f – обычный файл;
- l – символическая ссылка;
- p – именованный канал;
- s – сокет.
Size n
— поиск файлов, размер которого равен n единиц;
-mtime -n +n
– поиск файлов, которые изменяли свое содержание меньше чем (-) либо больше чем (+) дней назад.
А теперь несколько примеров применения команды find.
Самой применяемой опцией является -name, которая ищет файлы по имени.
Например, команда:
find ~ Music -name "*.mp3"
произведет поиск всех файлов (символ *), которые имеют расширение.mp3 в папке Music, которая находится в вашей Домашней директории.
find / -name "*.pdf"
Данная команда произведет поиск файлов с расширением.pdf во всех каталогах, куда вам разрешен доступ. Если программа не может зайти в некоторые системные каталоги, то она вас об этом предупредит. А если вам все таки нужно просмотреть полностью все каталоги, тогда используйте права Суперпользователя:
sudo find / -name "*.pdf"
find ~ -name "Foto*"
выведет список файлов домашнего каталога, начинающихся с букв Foto.
Ключ `-name’ различает большие и маленькие буквы; для того чтобы во время поиска не обращать внимание на эти критерии, нужно использовать опцию ‘-iname’. Тогда программа найдет все файлы, которые будут состоять из букв: Foto, foto или FOTO.
Если хотите, чтобы результат поиска был сохранен в текстовый файл, то команда примет следующий вид:
find ~ -name "Foto*" > results.txt
Если вам известно полное имя файла, тогда команда будет следующая:
find / -name .profile
В данном случае будет произведен поиск скрытого файла.profile во всей системе.
Можно произвести поиск файла если известна часть его имени. В таком случае команда будет такой:
find /home/dm/Музыка/Клипы/ -name "*uniform*"
Если вы хотите найти файлы, которые начинаются с каких-то определенных букв (например, от a до c), то в таком случае лучше применить регулярные выражения, которые очень удобны в работе:
find / -name "*"
Данная команда сможет найти все файлы вашей системы, которые начинаются с букв от a до c.
Поиск файлов с определенными режимами доступа
Если вы захотите отыскать файлы, которые имеют определенные режимы доступа, то помочь вам в этом сможет опция -perm. Например, найдем файлы, у которых режим доступа равен 775, и находятся в текущем каталоге:
find . -perm 775
Поиск файлов по пользователю, либо группе.
Чтобы найти файл, который принадлежит определенному пользователю достаточно выполнить следующую команду:
find / -user comp
Эта команда найдет файлы в системе, которые принадлежат пользователю comp.
А для того, чтобы найти файлы, которые принадлежат какой-то определенной группе (например group2), выполним команду:
find / -group group2
Чтобы найти файлы несуществующих пользователей либо групп, нужно использовать опции -nouser и -nogroup:
find / -nouser
find / -nogroup
Поиск файлов определенного типа
У команды find есть еще одна полезная возможность, можно найти файлы определенного типа. Для этого применим ключ -type. Найдем символические ссылки в каталоге /etc:
find /etc -type l
Найдем список каталогов, которые присутствуют в папке /mnt/raid
find /mnt/raid -type d
Поиск файлов по размеру.
Ключ -size дает возможность найти файлы нужного вам размера.
find . -size 2000k
Данная команда найдет и покажет на экране файлы, размер которых равен 2 мегабайта, и которые находятся в текущем каталоге. А если например нужно отыскать файлы размером менее 500 килобайт, то в таком случае команда будет такой:
find . -size -500k
Если вам нужно отыскать файлы с размером более 900 мегабайт, то команда будет следующей:
find / -size +900M
Поиск файлов с использованием ключа -mtime
Ключ -mtime дает возможность вам отыскать файлы, которые изменялись в какой-то определенный срок времени.
Например, у нас есть задача найти файлы, которые находятся в папке /home/dm/Video , и которые изменялись за последние 10 дней.
find /home/dm/Video -mtime +10
Если вам нужно наоборот, например, найти файлы, которые не изменялись неделю, тогда команда будет следующей:
find /home/dm/Video -7
В следующей статье я напишу о графических инструментах поиска в Ubuntu Linux.
Несомненно, при работе с Linux, иногда возникает необходимость поиска файлов с определенными характеристиками. Этими характеристиками могут быть размер или тип файла, права доступа и другое.
Наличие в Linux команды find , во многом помогает справиться с поиском файлов по различным критериям.
Сегодня мы разберем поиск файлов в Linux и приведем основные опции команды find , которые вы сможете применить в своей работе.
Формат команды find :
find путь -опции
где путь - это каталог, в котором произвести поиск. В качестве пути можно указывать следующие значения:
. - поиск в текущем каталоге;
/ - поиск от корневого каталога;
~ - поиск в домашнем каталоге.
Что до опций, то тут гораздо бОльший список, с которым крайне необходимо внимательно ознакомиться (это в будущем очень поможет!). Итак, основные опции команды find :
-name - поиск файлов по имени, используя приведенный шаблон;
-user - поиск файлов, принадлежащих указанному пользователю;
-group - поиск файлов, принадлежащих указанной группе;
-perm - поиск файлов с указанным режимом доступа;
-type - поиск файлов определенного типа. Типов тоже достаточно:
- b - специальный блочный файл;
- d - каталог;
- c - специальный символьный файл;
- f - обычный файл;
- l - символическая ссылка;
- p - именованный канал;
- s - сокет.
-mtime -n +n - поиск файлов, содержание которых изменялось менее чем (-) или более чем (+) дней назад.
Рассмотрим некоторые примеры применения команды find :
Наиболее часто применяемой опцией является опция -name , которая производит поиск файлов по имени.
Примеры с опцией -name :
$ find /mnt/usb -name "*.mp3" -print
произведет поиск всех файлов (об этом свидетельствует знак *), имеющих расширение.mp3 на USB-устройстве, смонтированном в каталог /mnt/usb.
$ find ~ -name "test*" -print
выведет на экран список файлов домашнего каталога, начинающихся на test.
Если вам надо найти файлы, начинающиеся с определенных букв (к примеру, от a до j), то здесь будет удобно применить регулярные выражения, которые крайне удобны в работе:
$ find / -name "*" -print
Вышеуказанная команда позволит отыскать все файлы в системе, начинающиеся с букв от a до j.
Поиск файлов с определенными режимами доступа
Если потребуется найти файлы, имеющие определенные режимы доступа, вам поможет опция -perm , которая легко в этом поможет.
К примеру, выполним поиск файлов с режимом доступа 775 (владелец и группа имеют полные права и ограничение на запись имеют остальные пользователи), находящихся в текущем каталоге:
$ find . -perm 775 -print
Выполняя поиск при помощи find с опцией -perm можно использовать и другой способ - можно перед значением режима поставить дефис и тогда будет произведен поиск файлов, для которых установлены все указанные биты разрешений. Причем, остальные биты в этом случае игнорируются.
К примеру, найдем файлы, к которым пользователи группы имеют полный доступ:
$ find . -perm -070 -print
Вместо знака дефиса, можно указать знак плюса. В этом случае будет произведен поиск файлов, у которых установлен хотя бы один из указанных битов разрешений. Остальные биты при этом игнорируются.
Поиск файлов определенного пользователя или группы
Поиск файлов какого-либо определенного пользователя крайне прост в своей реализации. Для этого достаточно выполнить команду:
$ find / -user admin -print
Вышеуказанная команда произведет поиск файлов в системе, принадлежащих пользователю admin.
Для того, чтобы найти файлы, принадлежащие определенной группе (к примеру managers), выполним команду:
$ find / -group managers -print
Для поиска файлов несуществующих пользователей или групп можно воспользоваться опциями -nouser и -nogroup :
$ find / -nouser -print
$ find / -nogroup -print
Поиск файлов определенного типа
Одной из удобных возможностей команды find , является возможность поиска файлов определенного типа. Рассмотрим варианты использования опции -type :
Поиск символических ссылок в каталоге /etc:
$ find /etc -type l -print
Вывод на экран списка каталогов, присутствующих в каталоге /mnt/raid
$ find /mnt/raid -type d -print
Поиск файлов определенного размера
Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:
$ find . -size 2000k -print
Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта, находящийся в текущем каталоге. Если, к примеру, необходимо найти файлы размером менее 500 килобайт, то вид команды будет следующий:
$ find . -size -500k -print
Если нужно найти файлы размером более 600 мегабайт, то применим команду:
$ find / -size +600M -print
Поиск файлов с использованием опции -mtime
Опция -mtime позволит вам найти файлы, изменявшиеся в какой-то срок времени.
К примеру, у нас встала задача поиска файлов, находящихся в каталоге /mnt/raid/upload , и изменявшихся за последние 5 дней. В этом нам поможет команда:
$ find /mnt/raid/upload -mtime -5 -print
Если нам необходимо обратное, к примеру, отыскать файлы, которые не изменялись неделю, применим команду:
$ find /mnt/raid/upload -7 -print
Команда find является крайне удобным инструментом для поиска файлов и может использоваться также и для поиска файлов на дисках NFS (сетевых файловых системах), но в этом случае необходимо учесть, что времени на поиск чего-либо на NFS уйдет гораздо больше, чем на локальных дисках.
В этой статье мы рассмотрели лишь основные опции команды find, которые помогут вам в вашей работе. Используйте то, что удобно и не переживайте по пустякам!
Очень часто требуется срочно найти какой-то файл в файловой системе, но где он вы не имеете ни малейшего понятия. И если GUI утилиты для поиска файла надоели или вообще у вас GUI не установлен или вы принципиально им не пользуетесь, то на помощь придут обширные команды для поиска файлов, папок и частей файла в linux.
Поиск файла по имени в базе данных.
С помощью команды locate
можно проводить поиск файла(ов) по части имени файла. Команда сканирует базу данных имен и выдает путь до искомого файла(ов). Мы рекомендуем запускать команду с опцией -i: locate -i
для поиска без учета регистра.
Пример:
subsanek@subsanek-laptop:~$ locate -i .ogg
/home/subsanek/неизвестно - неизвестно/01 - неизвестно 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(усечено)
-вызов команды нашел все файлы в системе с расширение ogg.
locate ищет файлы очень быстро, но это лишь просмотр списка имен из базы данных и если файл создан недавно, то велика вероятность его не найти.
Обновление базы данных.
Обновить базу данных команды locate можно командой (от суперпользователя):
updatedb
Удобочитаемый вывод.
Часто команда locate может дать многотысячный результат который просто промелькнет перед экраном и ничего не даст для ваших глаз, чтобы избежать этого можно перенаправить результат вывода в контейнер:
locate -i .ogg | less
Также можно задать сколько необходимо вывести результатов опцией -n:
locate -i .ogg -n 10
-выведет первые 10 результатов.
Поиск файлов с реальном сканированием.
Команда find выполняет просмотр файловой системы для поиска файла, что делает этот инструмент медленным, но эффективным.
Для поиска по имени обязательно нужно указывать ключ -name
Пример:
find -name filename.txt
По умолчанию find производит поиск рекурсивно в текущем каталоге.
Поиск текста по фрагменту из текста.
Легендарная команда grep может служить практически для любых целей. Я ее люблю применять не только для поиска нужных файлов в каталоге исходного текста. С помощью grep также можно задавать поиск по регулярным выражениям.
Прототип команды:
grep "шаблон поиска" файл_в_котором_искать
Пример:
grep -R "text" /
-команда будет рекурсивно искать во всех текстовых файлах системы слово text.
Grep имеет внушительное количество опций которые могут довольно часто понадобиться:
subsanek@subsanek-laptop:~$ grep --help
Использование: grep [КЛЮЧ]... ШАБЛОН [ФАЙЛ]...
Поиск ШАБЛОНА в каждом ФАЙЛЕ или в стандартном вводе.
По умолчанию, ШАБЛОН представляет собой простое регулярное выражение (BRE).
Пример: grep -i "hello world" menu.h main.c
Выбор типа регулярного выражения и его интерпретация:
-E, --extended-regexp ШАБЛОН - расширенное регулярное выражение (ERE)
-F, --fixed-regexp ШАБЛОН - строки фиксированной длины, разделённые
символом новой строки
-G, --basic-regexp ШАБЛОН - простое регулярное выражение (BRE)
-P, --perl-regexp ШАБЛОН - регулярное выражения языка Perl
-e, --regexp=ШАБЛОН использовать ШАБЛОН для поиска
-f, --file=ФАЙЛ брать ШАБЛОН из ФАЙЛа
-i, --ignore-case игнорировать различие регистра
-w, --word-regexp ШАБЛОН должен подходить ко всем словам
-x, --line-regexp ШАБЛОН должен подходить ко всей строке
-z, --null-data строки разделяются байтом с нулевым значением, а не
символом конца строки
Дополнительно:
-s, --no-messages подавлять сообщения об ошибках
-v, --revert-match выбирать не подходящие строки
-V, --version вывести информацию о версии и выйти
--help показать помощь и выйти
--mmap использовать отображение в память (mmap) по возможности
Управление выводом:
-m, --max-count=ЧИСЛО остановиться после указанного ЧИСЛА совпадений
-b, --byte-offset печатать вместе с выходными строками смещение в
байтах
-n, --line-number печатать номер строки вместе с выходными строками
--line-buffered сбрасывать буфер после каждой строки
-H, --with-filename печатать имя файла для каждого совпадения
-h, --no-filename не начинать вывод с имени файла
--label=МЕТКА выводить МЕТКУ в качестве имени файла для
стандартного ввода
-o, --only-matching показывать только часть строки, совпадающей с ШАБЛОНОМ
-q, --quiet, --silent подавить весь обычный вывод
--binary-files=ТИП считать, что двоичный файл ТИПА:
binary, text или without-match.
-a, --text то же что и --binary-files=text
-I то же, что и --binary-files=without-match
-d, --directories=ДЕЙСТВ как обрабатывать каталоги
ДЕЙСТВИЕ может быть read (читать),
recurse (рекурсивно), или skip (пропускать).
-D, --devices=ДЕЙСТВ как обрабатывать устройства, FIFO и сокеты
ДЕЙСТВИЕ может быть "read" или "skip"
-R, -r, --recursive то же, что и --directories=recurse
--include=Ф_ШАБЛОН обработать только файлы, подпадающие под Ф_ШАБЛОН
--exclude=Ф_ШАБЛОН пропустить файлы и каталоги,
подпадающие под Ф_ШАБЛОН
--exclude-from=ФАЙЛ пропустить файлы, подпадающие под шаблон
файлов из ФАЙЛА
--exclude-dir=ШАБЛОН каталоги, подпадающие под ШАБЛОН,
будут пропущены
-L, --files-without-match печатать только имена ФАЙЛОВ без совпадений
-l, --files-with-matches печатать только имена ФАЙЛОВ с совпадениями
-c, --count печатать только количество совпадающих
строк на ФАЙЛ
-T, --initial-tab выравнивать табуляцией (если нужно)
-Z, --null печатать байт 0 после имени ФАЙЛА
Управление контекстом:
-B, --before-context=ЧИС печатать ЧИСЛО строк предшествующего контекста
-A, --after-context=ЧИС печатать ЧИСЛО строк последующего контекста
-C, --context[=ЧИС] печатать ЧИСЛО строк контекста,
--color[=КОГДА],
--colour[=КОГДА] использовать маркеры для различия совпадающих
строк; КОГДА может быть always (всегда),
never (никогда), или auto (автоматически)
--color, --colour использовать маркеры для различия совпадающих строк
-U, --binary не удалять символы CR в конце строки (MSDOS)
-u, --unix-byte-offsets выдавать смещение, как-будто нет CR-ов (MSDOS)
Вместо egrep предполагается запуск grep -E. Вместо fgrep предполагается grep -F.
Запуск под именами egrep или fgrep лучше не выполнять.
Когда не задан ФАЙЛ, или когда ФАЙЛ это -, то читается стандартный ввод.
Если указано меньше, чем два файла, то предполагает -h. При нахождении
совпадений кодом завершения программы будет 0, и 1, если нет.При возникновении
ошибок, или если не указан параметр -q, кодом завершения будет 2.