Как найти программу в linux через терминал

Содержание

Например, чтобы найти все каталоги в текущем рабочем каталоге , вы должны использовать:

Типичным примером может быть рекурсивное изменение разрешений файлов веб-сайтов на 644 и разрешений каталогов на 755 с помощью команды chmod :

Найти файлы по разрешениям

Параметр -perm позволяет вам искать файлы на основе прав доступа к файлам.

Например, чтобы найти все файлы с разрешениями ровно 775 внутри каталога /var/www/html , вы должны использовать:

Вы можете поставить перед числовым режимом знак минус — или косую черту / .

Когда в качестве префикса используется косая черта / , то по крайней мере одна категория (пользователь, группа или другие) должна иметь по крайней мере соответствующие биты, установленные для соответствия файлу.

Рассмотрим следующий пример команды:

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

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

Linux урок 6. Поиск файлов/директорий/ссылок. Команда find

Найти файлы по владельцу

Чтобы найти файлы, принадлежащие конкретному пользователю или группе, используйте параметры -user и -group .

Например, для поиска всех файлов и каталогов, принадлежащих пользователю baks , вы должны выполнить:

Вот пример из реальной жизни. Допустим, вы хотите найти все файлы , принадлежащие пользователю www-data и изменить владельца совпавших файлов из www-data к nginx :

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name — поиск файлов по имени.
  • -perm — поиск файлов в Linux по режиму доступа.
  • -user — поиск файлов по владельцу.
  • -group — поиск по группе.
  • -mtime — поиск по времени модификации файла.
  • -atime — поиск файлов по дате последнего чтения.
  • -nogroup — поиск файлов, не принадлежащих ни одной группе.
  • -nouser — поиск файлов без владельцев.
  • -newer — найти файлы новее чем указанный.
  • -size — поиск файлов в Linux по их размеру.

Синтаксис команды find

Общий синтаксис команды find , который вы можете найти в справочном руководстве, может показаться не совсем простым, поэтому я приведу более удобный для восприятия:

Путь

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

Опции

Опции команды find указываются, начиная с символа «-», за которым следует название опции. Рассмотрим основные опции.

-depth (или -d) Поиск в подкаталогах перед поиском в самом каталоге.
-L При поиске следовать по символическим ссылкам.
-maxdepth N При поиске проверять не более чем N вложенных уровней каталогов.
-mindepth N Не проверять вложенные каталоги уровня N и меньше.
-mount Не искать в каталогах других файловых систем.

Установка программ в linux, через терминал

Критерии поиска

У команды find может быть несколько критериев поиска (их также называют tests ). Каждый критерий представляет собой определенное условие проверки, которое возвращает либо true либо false . Это можно сравнить с условиями оператора if в программировании. В процессе обработки очередного файла команда find по очереди проверяет каждый критерий, и если очередной критерий возвращает false , тогда команда find переходит к следующему файлу. Критериев у команды find довольно много, мы рассмотрим только некоторые из них.

-atime N Последний раз к файлу обращались N дней назад.
-mtime N Последнее изменение файла было N дней назад.
-name шаблон Имя файла (шаблон имени) без указания пути. Рекомендуется всегда заключать шаблон в кавычки.
-newer другой_файл Файл был изменен позже, чем другой_файл .
-size [±] N [cwbkMG] Размер файла равен N блокам, если указано +N , тогда размер файла больше N , -N — меньше. Символ после N означает размер блока. b — 512 байт, с — байт, w — 2 байта, k — килобайт, M — мегабайт, G — гигабайт.
-type C Файл типа C . Наиболее часто используемые значения для С : d — каталог, f — файл.
-user Имя_пользователя Файл принадлежит пользователю с именем Имя_пользователя .

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

Найти в текущем каталоге обычные файлы (не каталоги), имя которых начинается с символа «~».

Читайте также:
Программа моби с инструкция по применению

Найти в текущем каталоге файлы, измененные позже, чем файл file.bak .

Операторы

Критерии можно объединять, используя операторы. Ниже приведены операторы в порядке убывания их приоритета.

Короткая форма оператораДлинная формаОписание
! критерий -not Отрицание (возвращает true , если критерий false )
критерий1 -a критерий2 -and Оператор И ( true , если критерий1 и критерий2 true )
критерий1 -o критерий2 -or Оператор ИЛИ ( true , если критерий1 или критерий2 true )

В общем случае при использовании операторов критерии проверяются в порядке их приоритета. Изменить порядок можно с помощью скобок. Скобки нужно выделять с помощью обратного слеша.

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

Найти в текущем каталоге файлы, начинающиеся с символа «~» или c «temp» и являющиеся именно обычными файлами (-type f ), а не каталогами.

Найти в текущем каталоге (не обрабатывая подкаталоги — -maxdeph 1) обычные файлы (-file f) размером больше 600 мегабайт и менее 1 гигабайта (-size) или файлы имя которых заканчивающиется на «.mpeg» (-name).

Действия над файлами

Когда выполняется команда find , вы можете выполнять различные действия над найденными файлами. Рассмотрим основные из них.

-exec команда ; Выполнить команду. Обратите внимание, что после команды ставится обратный слеш и точка с запятой.
-execdir команда ; То же самое что и exec, но команда вызывается из подкаталога, содержащего текущий файл.
-ok команда ; То же самое, что и exec, но перед обработкой очередного файла будет выводится запрос на выполнение команды.
-okdir команда ; То же что ok для execdir.
-print Вывод имени файла на экран.
-ls Выполнение команды ls -dils над текущим файлом.

В выполняемых командах вы можете использовать параметр <> в качестве аргумента, который заменяется путем к текущему файлу.

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

Найти в текущем каталоге обычные файлы размером больше 1000 байт и выполнить над ними команду ls -dils (действие ls).

Найти в текущем каталоге обычные файлы, начинающиеся с символа тильда «~», и для каждого файла выдавать запрос на его удаление (на выполнение команды rm ).

Основные опции команды find

  • -name — поиск файлов по имени;
  • -user — поиск файлов, принадлежащих указанному пользователю;
  • -type — поиск файлов определенного типа. Вот наиболее используемые типы:
  • d – каталог;
  • f – обычный файл;
  • l – символическая ссылка;

Поиск файлов по дате изменения

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

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

Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в /etc/dovecot/conf.d каталоге, который заканчивается .conf и был изменен за последние пять дней с помощью:

Вот еще один пример фильтрации файлов по дате изменения с использованием этой -daystart опции. Команда ниже выведет список всех файлов в /home каталоге, которые были изменены 30 или несколько дней назад:

-prune: ограничить глубину

С помощью path можно посмотреть содержимое всех поддиректорий code на букву p /code/p* Если нужно посмотреть только поддиректории верхнего уровня — используется -prune

find . -path «./code/p*» -prune

Получили только поддиректории без их содержимого

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

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

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

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

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

Источник: 2cheloveka.ru

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

Примеры использования команды Find в Linux

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

Используем команду find в Linux

Команда find предназначена для поиска различных объектов, включая файлы любых форматов и директории различной глубины. От пользователя требуется только ввести саму команду, указать искомое значение и присвоить аргументы, чтобы задать параметры фильтрации. Выполнение процедуры самой утилитой обычно не занимает много времени, но это зависит еще от объема сканируемой информации. Теперь же давайте остановимся на примерах использования find более детально.

Переход в директорию через консоль

Для начала хотелось бы немного отступить от основной команды и затронуть тему дополнительных действий, которые в будущем помогут при управлении из консоли. Дело в том, что утилиты в дистрибутивах Linux не заточены под поиск всех находящихся на компьютере элементов. Все процессы следует запускать только с указанием полного расположения к элементам либо переходить в расположение через команду cd. Сделать это можно достаточно легко:

Переход к нужной директории через файловый менеджер Linux

    Откройте установленный файловый менеджер и перейдите в требуемую папку, где хотите в дальнейшем использовать команду find.
  • На любом объекте щелкните ПКМ и найдите пункт «Свойства». Переход к свойствам объекта в операционной системе Linux
  • Вы увидите его родительскую папку с полным указанием пути. Запомните его, чтобы осуществить переход из «Терминала». Узнать родительскую папку объекта через свойства в Linux
  • Теперь запустите консоль, например, через меню. Запуск терминала для последующего ввода команд в Linux
  • Пропишите там команду cd /home/user/folder , где user — имя домашней папки пользователя, а folder — название требуемой директории. Переместиться к расположению в терминале Linux
  • Читайте также:
    Программа один для прошивки не видит планшет

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

    Поиск файлов в текущей директории

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

    Использование команды find без аргументов в Linux

    Активация find без аргументов и опций используется тогда, когда надо просмотреть сразу все элементы. Если их название полностью не помещается в строки, стоит изменить команду, чтобы она обрела вид find . -print .

    Поиск файлов в указанном каталоге

    Команда для отображения файлов через заданный путь практически не отличается от той, которую мы упомянули выше. Вам так же следует прописать find , а после добавить ./folder , если хотите узнать данные о каталоге в текущем расположении, либо же потребуется указать полный путь, путем ввода, например, find ./home/user/downloads/folder , где folder — конечная директория. Каждые элементы будут выведены отдельными строками в порядке их глубины.

    Использование команды find с указанием расположения файла в Linux

    Поиск по имени

    Иногда появляется надобность отобразить только удовлетворяющие по названию объекты. Тогда пользователю нужно задать отдельную опцию для команды, чтобы она поняла обращение. Строка ввода обретает такой вид: find . -name «word» , где word — ключевое слово для поиска, которое обязательно прописывается в двойных кавычках и с учетом регистра каждого символа.

    Поиск файлов по имени через команду find в Linux

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

    Для фильтрации результатов по ключевому слову к аргументу -name добавляется еще один. Команда обретает вид find . -not -name «word» , где word — слово, которое надо исключить.

    Включить фильтрацию по ключевому слову команде find в Linux

    Еще порой возникает потребность отыскать объекты по одному ключу, исключив при этом другой. Тогда поочередно присваивается сразу несколько опций поиска и строка ввода получается следующей: find . -name «word» -not name «*.txt» . Обратите внимание, что во втором аргументе в кавычках указано «*.txt», а это значит, что find работает не только с названиями, но и с форматами файлов, которые задаются в таком виде.

    Совмещенный поиск по имени командой find в Linux

    Существует и оператор ИЛИ. Он позволяет найти один или сразу несколько подходящих аргументов. Каждый указывается отдельно, с добавлением при этом соответствующих аргументов. В итоге получится примерно следующее: find -name «word» -o -name «word1» .

    Применение опции ИЛИ в команде find Linux

    Указание глубины поиска

    Команда find поможет юзеру и тогда, когда ему нужно найти содержимое директорий только до указанной глубины, например, не требуется осуществление анализа внутри третьей подпапки. Для установки подобных ограничений впишите find . -maxdepth N -name «word» , где N — максимальная глубина, а -name «word» — любые последующие аргументы.

    Указать глубину сканирования командой find в Linux

    Поиск в нескольких директориях

    Во многих каталогах присутствует сразу по несколько папок с различным содержимым. Если их там находится большое количество, а поиск нужно осуществить только в определенных, тогда потребуется указать это при вводе команды find ./folder ./folder1 -type f -name «word» , где ./folder ./folder1 — перечень подходящих директорий, а -name «word» — остальные аргументы.

    Поиск в нескольких папках при использовании команды find в Linux

    Отображение скрытых элементов

    Без указания соответствующего аргумента скрытые объекты, находящиеся в сканируемых каталогах, отображаться в консоли не будут. Потому пользователь вручную прописывает дополнительную опцию, чтобы в итоге команда была такой: find ~ -type f -name «.*» . Вы получите полный список всех файлов, но если же к некоторым из них нет доступа, перед словом find в строке пропишите sudo , чтобы активировать права суперпользователя.

    Отобразить скрытые файлы командой find в Linux

    Сканирование домашних папок групп и пользователей

    Каждый пользователь может создавать неограниченное количество каталогов и объектов в разных расположениях. Быстрее всего отыскать ту информацию, которая принадлежит одному из юзеров, с помощью команды find и одного из ее аргументов. В «Терминале» пропишите find . -user username , где username — имя пользователя. После ввода сканирование запустится автоматически.

    Показать файлы, принадлежащие определенному пользователю командой find в Linux

    Примерно такая же схема работает и с группами пользователей. Запуск анализа файлов, связанных с одной из групп, происходит через find /var/www -group groupname . Не забывайте, что объектов может быть большое количество и на вывод их всех иногда уходит много времени.

    Показать файлы, принадлежащие определенной групе командой find в Linux

    Фильтрация по дате изменений

    Операционная система автоматически сохраняет информацию о дате изменения каждого существующего файла. Команда find позволяет найти их все по указанному параметру. Требуется только прописать sudo find / -mtime N , где N — количество дней назад, когда объект был изменен последний раз. Приставка sudo здесь нужна для того, чтобы получить данные и о файлах, предназначенных только для суперпользователя.

    Фильтрация по дате изменения при команде find в Linux

    Если же вас интересует просмотр элементов, которые последний раз открывались определенное количество дней назад, тогда строка немного меняет свой вид на sudo find / -atime N .

    Фильтрация по дате открытия при команде find в Linux

    Фильтрация по размеру файлов

    Каждый объект имеет свой размер, соответственно, команда для поиска файлов должна обладать функцией, позволяющей фильтровать их по этому параметру. find умеет это делать, юзеру необходимо только задать сам размер через аргумент. Достаточно ввести find / -size N , где N — объем в байтах, мегабайтах (M) или гигабайтах (G).

    Читайте также:
    Как закрепить программу на рабочем столе мак

    Фильтрация поиска по размеру с помощью find в Linux

    Указать можно и диапазон искомых элементов. Тогда в команду вписываются определители и получится, например, такая строка: find / -size +500M -size -1000M . Такой анализ будет отображать файлы более 500 мегабайтов, но менее 1000.

    Установить диапазон объема файлов для поиска через find в Linux

    Поиск пустых файлов и каталогов

    Некоторые из файлов или папок бывают пустые. Они просто занимают лишнее пространство на диске и иногда мешают нормально взаимодействовать с компьютером. Их следует найти, чтобы определиться с дальнейшими действиями, а в этом поможет find /folder -type f -empty , где /folder — место, где осуществляется сканирование.

    Показать пустые объекты с помощью find в Linux

    Отдельно хотелось бы вкратце отметить другие полезные аргументы, которые время от времени становятся полезными для юзера:

    Аргументы Описание
    -mount Ограничение только на текущую файловую систему
    -type f Отображать только файлы
    -type d Показывать только директории
    -nogroup Поиск файлов, которые не относятся к никакой группе
    -nouser Поиск файлов, которые не принадлежат пользователю
    -version Узнать версию используемой утилиты

    На этом ознакомление с командой find законченно. Если желаете детально изучить другие стандартные консольные инструменты операционных систем на ядре Линукс, советуем обратиться к отдельному нашему материалу по следующей ссылке.

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

    Источник: lumpics.ru

    Команда find Linux

    Изображение баннера

    find это мощный инструмент для работы с файлами.

    С его помощью можно задавать различные составные условия для дальнейших действий над файлами.

    Часто ипользуется как первый шаг перед копированием, перемещением, удалением, изменением файлов, соответсвующих определённым условиям.

    В этой статье вы можете познакомится с основами применения find. Про применение find совместно с grep , sed , xargs и другими утилитами вы можете прочитать в статье «Продвинутые методы работы с find»

    Поиск

    Найти и вывести на экран все файлы в директории

    find
    find .
    find . -print

    -name: Поиск по имени

    Найти по полному имени в текущей директории

    find . -name ‘heihei.log’

    Если регистр не важен

    find . -iname ‘heihei.log’

    Поиск по расширению

    Найти по расширению файла с помощью wildcard *

    Ищем в /usr/share/doc все pdf файлы

    -not: обратное условие

    Найти в текущей директории все файлы кроме php

    find . -not -name ‘*.php’
    find . ! -name ‘*.php’

    Несколько условий вместе

    Найти все файлы, которые начинаются с log но не имеют расширения .txt

    find . -name «log*» ! -name ‘*.txt’

    -o: Логическое или

    Найти либо .html либо .php файлы

    find . -name ‘*.html’ -o -name ‘*.php’

    Найти и скопировать

    Найти и сразу скопировать в текущую директорию

    Найти в текущей директории

    Удалить из текущей директории

    Поиск по типу

    Чтобы найти только файлы определённого типа выполните find с опцией type.

    Например, что найти все ссылки в директории /etc

    find /etc -type l

    Подробнее о файлах в Linux читайте в статье «Типы файлов в Linux»

    Уровни вложенности

    Найти все ссылки только на верхнем уровне вложенности

    find /etc -maxdepth 1 -type l

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

    Filesystem Size Used Avail Use% Mounted on /dev/sda1 1014M 194M 821M 20% /boot

    Найти обычные файлы определённого размера

    Чтобы найти обычные файлы нужно использовать -type f

    find /boot -size +20000k -type f

    find: ‘/boot/efi/EFI/centos’: Permission denied find: ‘/boot/grub2’: Permission denied /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img /boot/initramfs-3.10.0-1160.el7.x86_64.img /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img

    Файлы бывают следующих типов:

    — : regular file
    d : directory
    c : character device file
    b : block device file
    s : local socket file
    p : named pipe
    l : symbolic link

    Подробности в статье — «Файлы в Linux»

    find /boot -size +10000k -type f

    find: ‘/boot/efi/EFI/centos’: Permission denied find: ‘/boot/grub2’: Permission denied /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img /boot/initramfs-3.10.0-1160.el7.x86_64.img /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

    То же самое плюс показать размер файлов

    find /boot -size +10000k -type f -exec du -h <> ;

    find: ‘/boot/efi/EFI/centos’: Permission denied find: ‘/boot/grub2’: Permission denied 60M /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img 21M /boot/initramfs-3.10.0-1160.el7.x86_64.img 13M /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img 21M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img 14M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

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

    Обратите внимание, что в find, в отличие от grep , ставить перед началом названия никаких символов не нужно.

    find -name ‘topb*’

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

    Найти в проекте topbicyle все директории с qa в названии

    find topbicycle/ -name ‘*qa*’ -type d

    -perm: поиск по правам доступа

    find . -type f -perm 0600
    find . -type f ! -perm 0600

    -path: поиск путей

    Если мне нужно посмотреть содержимое директорий /code/php и /code/python

    find . -path «./code/p*»

    Пример укороченного результата

    -prune: ограничить глубину

    С помощью path можно посмотреть содержимое всех поддиректорий code на букву p /code/p*

    Если нужно посмотреть только поддиректории верхнего уровня — используется -prune

    find . -path «./code/p*» -prune

    Получили только поддиректории без их содержимого

    Исключить директорию из поиска

    Из предыдущего параграфа понятно, что с помощью prune можно исключить директорию из поиска.

    Пример: найти в ./code все файлы, заканчивающиеся на index.php но проигнорировать поддиректории на p, то есть в директориях python и php не искать.

    find ./code -path «./code/p*» -prune -false -o -name «*index.php»

    ./code/js/errors/index.php ./code/js/index.php ./code/c/index.php ./code/cpp/index.php ./code/go/pointers/index.php ./code/go/declare_variable/index.php ./code/go/constants/index.php ./code/go/index.php ./code/java/index.php ./code/dotnet/index.php ./code/ruby/index.php ./code/theory/index.php ./code/index.php

    -false нужен чтобы не выводить проигнорированные директории.

    Ещё один способ исключить директорию из поиска

    find ./code -name «*.php» -not -path «./code/p*»

    Источник: www.andreyolegovich.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru