Поиск по терминалу линукс

Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.

5 способов поиска файлов в Linux, используя терминал.

Сегодня мы рассмотрим нескольно наиболее популярных способов поиска файлов в Linux, используя терминал.

1) find : Для поиска файлов из командной строки вы можете использовать команду “find”. У этой команды следующий синтаксис:

find path criteria action

“path” Секция для указания директории поиска. Если ничего не указано поиск идет по текущей директории.

“criteria” Опции поиска.

“action” Опции, которые влияют на состояние поиска или контролируют его, например,

2) locate : Команда “locate” это альтернатива команде “find -name”. Команда find ищет файлы в выбранной части файловой системы и процесс может быть не очень быстрым. С другой стороны, команда locate ищет файлы в базе данный, созданной специально для этих целей /var/lib/locatedb, что происходит намного быстрее. Для обновления базы используется команда updatedb.

3) whereis :whereis” возвращает место расположения кода (опция -b), ман-страниц (опция -m), и исходные файлы (опция -s) для указанной команды. Если опции не указываются, выводится вся доступная информация. Эта команда быстрее чем “find” но менее полная.

4) which : Команда “which” ищет все пути перечисленные в переменной PATH для указанной команды.

5) type :

При вызове без опций показывает, как имена будут интерпретироваться

при использовании в качестве имени команды. Если использована опция -a, команда type выдает список всех каталогов, где есть выполняемый файл с

соответствующим именем. В список включаются также псевдонимы и функции,

если только не указана опция -p. К

хэшу команд не обращаются, если указана опция -a. Команда type возвращает 0,

если хоть один из аргументов найден, и 1 в противном случае.

Explo.ru — все про туризм и отдых: горящие туры и путевки в Турцию, Египет, отзывы туристов, фото красивых мест планеты. Напиши свой отзыв о курорте, стране или отеле в котором ты был!

Если вам светит свадьба, не расстраивайтесь Свадебный портал поможет вам понять, как организовать и провести свадьбу на высшем уровне.

Источник

Поиск в Linux с помощью команды find

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type
-size Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»).
-mtime Время изменения файла. Указывается в днях.
-mmin Время изменения в минутах.
-atime Время последнего обращения к объекту в днях.
-amin Время последнего обращения в минутах.
-ctime Последнее изменение владельца или прав на объект в днях.
-cmin Последнее изменение владельца или прав в минутах.
-user Поиск по владельцу.
-group По группе.
-perm С определенными правами доступа.
-depth Поиск должен начаться не с корня, а с самого глубоко вложенного каталога.
-maxdepth Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный.
-prune Исключение перечисленных каталогов.
-mount Не переходить в другие файловые системы.
-regex По имени с регулярным выражением.
-regextype Тип регулярного выражения.
-L или -follow Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <> \; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования find

Поиск файла по имени

1. Простой поиск по имени:

find / -name «file.txt»

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий.

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

find . -name «sess_*» -a -name «*cd»

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

find . -name «sess_*» -o -name «*cd»

в) Более компактный вид имеют регулярные выражения, например:

find . -regex ‘.*/\(sess_.*cd\)’

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

find . ! -name «*.log»

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).

а) дате изменения:

find . -type f -newermt «2019-11-02 00:00»

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H «content» <> \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name «sess_*» -type f -print -exec rm <> \;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name «sess_*» -type f -exec mv <> new_name \;

find . -name «sess_*» -type f | xargs -I ‘<>‘ mv <> new_name

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name «*.tmp» | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 <> \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat <> \; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e «s/test/production/g» <> \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

Источник

Ищем файлы в 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», но расширение его неизвестно. В таком случае нужно выполнить следующее:

    -name «lumpics*» -print

    Как можно заметить, здесь используется символ «

    », который означает, что поиск будет проходить в домашней директории. После опции «-name» указано имя искомого файла («lumpics*»). Звездочка в конце означает что поиск будет проходить только по имени, не учитывая расширение.

    Поиск по первой букве в имени

    Если вы помните только первую букву, с которой начинается название файла, то существует специальный синтаксис команды, который вам поможет его отыскать. Например, вы хотите найти файл, который начинается с буквы от «g» до «l», и вы не знаете в каком каталоге он находится. Тогда вам необходимо выполнить следующую команду:

    find / -name «[g-l]*» -print

    Судя по символу «/», что идет сразу после основной команды, поиск будет проведен, начиная с корневого каталога, то есть во всей системе. Далее, часть «[g-l]*» означает, что искомое слово будет начинаться с определенной буквы. В нашем случае от «g» до «l».

    К слову, если вы знаете расширение файла, то после символа «*» можете его указать. Например, вам надо найти тот же файл, но вы знаете, что он имеет расширение «.odt». Тогда можно использовать такую команду:

    find / -name «[g-l]*.odt» -print

    Способ 2: Поиск по режиму доступа (опция -perm)

    Иногда необходимо найти объект, имя которого вы не знаете, но знаете каким режимом доступа он обладает. Тогда вам нужно применять опцию «-perm».

    Пользоваться ей довольно просто, нужно всего лишь указать место поиска и режим доступа. Вот пример такой команды:

    То есть поиск проводится в домашнем разделе, а искомые объекты будут обладать доступом 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) и обозначить тип. В начале статьи были перечислены все обозначения типов, которые можно применять для поиска.

    Например, вы хотите отыскать все блочные файлы в домашней директории. В этом случае ваша команда будет выглядеть так:

    Соответственно, вы указали что проводите поиск по типу файла, о чем свидетельствует опция «-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

    Графический интерфейс во многом облегчает жизнь новичкам, которые только установили дистрибутив Linux. Данный метод поиска очень похож на тот, что осуществляется в ОС Windows, хотя и не может дать всех тех преимуществ, что предлагает «Терминал». Но обо всем по порядку. Итак, рассмотрим, как сделать поиск файлов в Linux, используя графический интерфейс системы.

    Способ 1: Поиск через меню системы

    Сейчас будет рассмотрен способ поиска файлов через меню системы Linux. Проводимые действия будут выполняться в дистрибутиве Ubuntu 16.04 LTS, однако инструкция общая для всех.

    Допустим, вам необходимо найти в системе файлы под именем «Найди меня», также этих файлов в системе два: один в формате «.txt», а второй — «.odt». Чтобы их отыскать, необходимо изначально нажать на иконку меню (1), и в специальном поле для ввода (2) указать поисковый запрос «Найди меня».

    Отобразится результат поиска, где будут показаны искомые файлы.

    Но если в системе было бы много таких файлов и все они отличались расширениями, то поиск бы усложнился. Для того чтобы исключить в выдаче результатов ненужные файлы, например, программы, лучше всего воспользоваться фильтром.

    Расположен он в правой части меню. Фильтровать вы можете по двум критериям: «Категории» и «Источники». Разверните эти два списка, нажав по стрелочке рядом с названием, и в меню уберите выделения с ненужных пунктов. В данном случае разумнее будет оставить лишь поиск по «Файлы и папки», так как мы ищем именно файлы.

    Сразу можно заметить недостаток этого способа — нельзя детально настроить фильтр, как в «Терминале». Так, если вы ищите текстовый документ с каким-то названием, в выдаче вам могут показать картинки, папки, архивы и т. п. Но если вы знаете точное наименование нужного файла, то сможете быстро отыскать его, не изучая многочисленные способы команды «find».

    Способ 2: Поиск через файловый менеджер

    Второй способ имеет существенное преимущество. Используя инструмент файлового менеджера, можно произвести поиск в указанном каталоге.

    Выполнить данную операцию проще простого. Вам необходимо в файловом менеджере, в нашем случае Nautilus’е, войти в папку, в которой предположительно находится искомый файл, и нажать кнопку «Поиск», расположенную в верхнем правом углу окна.

    В появившееся поле для ввода вам нужно ввести предполагаемое название файла. Также не забывайте, что поиск может быть проведен не по целому имени файла, а лишь по его части, как показано на примере ниже.

    Как и в предыдущем способе, в этом точно так же можно использовать фильтр. Для его открытия нажмите на кнопку со знаком «+», расположенную в правой части поля ввода поискового запроса. Откроется подменю, в котором вы можете из выпадающего списка выбрать искомый тип файла.

    Заключение

    Из всего вышесказанного, можно сделать вывод, что для проведения быстрого поиска по системе отлично подойдет второй способ, завязанный на использовании графического интерфейса. Если же необходимо задать множество параметров поиска, то незаменимой будет команда find в «Терминале».

    Помимо этой статьи, на сайте еще 12315 инструкций.
    Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

    Отблагодарите автора, поделитесь статьей в социальных сетях.

    Источник

    Читайте также:  Домен контроллер повысить windows
    Оцените статью