Linux командная строка поиска

Содержание
  1. Linux и Windows: помощь админам и пользователям
  2. Администрируем и настраиваем Windows, Linux.
  3. 5 способов поиска файлов в Linux, используя терминал.
  4. Поиск в Linux с помощью команды find
  5. Общий синтаксис
  6. Описание опций
  7. Примеры использования find
  8. Поиск файла по имени
  9. Поиск по дате
  10. По типу
  11. Поиск по правам доступа
  12. Поиск файла по содержимому
  13. С сортировкой по дате модификации
  14. Лимит на количество выводимых результатов
  15. Поиск с действием (exec)
  16. Чистка по расписанию
  17. Как найти файлы в Linux с помощью командной строки
  18. How to Find Files in Linux Using the Command Line
  19. Вы можете использовать find команду для поиска файлов и каталогов на основе их прав доступа, типа, даты, владельца, размера и т. Д. Его также можно использовать в сочетании с другими инструментами, такими как grep или sed.
  20. Синтаксис команды find Linux
  21. Найти файлы по имени
  22. Найти файлы по расширению
  23. Поиск файлов по типу
  24. Найти файлы по размеру
  25. Поиск файлов по дате изменения
  26. Найти файлы по разрешениям
  27. Найти файлы по владельцу
  28. Найти и удалить файлы
  29. Вывод

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 с помощью командной строки

How to Find Files in Linux Using the Command Line

Вы можете использовать find команду для поиска файлов и каталогов на основе их прав доступа, типа, даты, владельца, размера и т. Д. Его также можно использовать в сочетании с другими инструментами, такими как grep или sed.

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

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

Общий синтаксис find команды выглядит следующим образом:

  • В options контроле атрибутов Обработка символических ссылок, параметры отладки и метод оптимизации.
  • path. Атрибут определяет начальный каталог или каталоги , где найти будет искать файлы.
  • expression Атрибут состоит из опций, шаблонов поиска, а также действия , разделенные операторами.

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

Давайте посмотрим на следующий пример:

  • Опция -L (options) указывает find команде следовать символическим ссылкам.
  • /var/www (путь . ) определяет каталог , который будет производиться поиск.
  • Выражение) -name «*.js сообщает find поисковым файлам, заканчивающимся .js (JavaScript-файлы).

Найти файлы по имени

Поиск файлов по имени, вероятно, является наиболее распространенным использованием find команды. Чтобы найти файл по имени, используйте -name опцию после имени файла, который вы ищете.

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

Чтобы запустить поиск без учета регистра, измените -name параметр с помощью -iname :

Команда выше будет соответствовать «Document.pdf», «DOCUMENT.pdf» ..etc.

Найти файлы по расширению

Поиск файлов по расширению аналогичен поиску файлов по имени. Например, чтобы найти все файлы, заканчивающиеся .log.gz внутри /var/log/nginx каталога, вы можете использовать:

Важно отметить, что когда вы используете подстановочный знак, вы должны либо заключить шаблон в кавычки, либо экранировать * символ звездочки с помощью обратной косой черты, \ чтобы она не интерпретировалась оболочкой.

Чтобы найти все файлы, которые не соответствуют регулярному выражению, *.log.gz вы можете использовать -not опцию. Например, чтобы найти все файлы, которые не заканчиваются на *.log.gz вас, используйте:

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

Иногда вам может потребоваться поиск файлов определенного типа, таких как обычные файлы, каталоги или символические ссылки. В Linux все это файл.

Для поиска файлов по их типу используйте -type опцию и один из следующих дескрипторов, чтобы указать тип файла:

  • f : обычный файл
  • d : каталог
  • l : символическая ссылка
  • c : символьные устройства
  • b : блочные устройства
  • p : FIFO
  • s : разъем

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

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

Найти файлы по размеру

Чтобы найти файлы по размеру файла, передайте -size параметр вместе с критериями размера. Вы можете использовать следующие суффиксы, чтобы указать размер файла:

  • b : 512-байтовые блоки (по умолчанию)
  • c : байты
  • w : двухбайтовые слова
  • k : Килобайты
  • M : Мегабайт
  • G : Гигабайты

Следующая команда найдет все файлы с точно 1024 байтами внутри /tmp каталога:

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

В следующем примере мы ищем все файлы меньше, чем 1MB внутри текущего рабочего каталога. Обратите внимание на — символ минус перед значением размера:

Если вы хотите искать файлы с размером больше чем 1MB , вам нужно использовать + символ плюс :

Вы даже можете искать файлы в диапазоне размеров. Следующая команда найдет все файлы между 1 и 2MB :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Найти и удалить файлы

Чтобы удалить все соответствующие файлы, добавьте -delete опцию в конец выражения соответствия.

Убедитесь, что вы используете эту опцию, только если вы уверены, что результат соответствует файлам, которые вы хотите удалить. Рекомендуется распечатать соответствующие файлы перед использованием -delete параметра.

Например, чтобы удалить все файлы, заканчивающиеся на .temp из, /var/log/ вы должны использовать:

Когда дело доходит до каталогов, find можно удалить только пустые каталоги так же, как rmdir .

Вывод

Мы показали вам, как использовать find команду с различными параметрами и критериями.

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

Источник

Читайте также:  Как изменить диспетчер задач windows
Оцените статью