HostDB.ru
 
Логин

Пароль



или войдите через соцсеть:
провайдеров: 59, переходов на сайты провайдеров сегодня: 0

Голосование

Какой CMS вы пользуетесь








Анекдот




- Команда find в shell

Команда find в shell

Найти определенный файл или каталог через shell всегда можно при помощи известной команды find. Однако использовать ее можно по-разному, а всяческие опции во время поиска открывают массу дополнительных возможностей. Рассмотрим их подробнее.

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

А вот так происходит аналогичный поиск, в котором не учитывается регистр символов:
find . -iname test

Обратите внимание на то, что конструкция поиска позволяет найти как файл, так и папку с заданным именем. Чтобы исключить из выдачи любые папки, нужно конкретизировать тип искомых данных при помощи специального ключа -type.
find . -type f -name test
Применение ключа -type f ограничит выдачу только файлами (f). Аналогично можно сделать и для папок, только использовать нужно уже ключ -type d:
find . -type d -name test

Еще больше сузить область поиска можно, если указать конкретное расширение файлов. К примеру, нам нужно найти все файлы с расширением .db в папке /var/docs:
find /var/docs -type f -name *.db
Как видите, поиск теперь будет не в текущем каталоге, а в заданном нами.

Если же ситуация сложилась так, что имя файла или папки неизвестно, то можно попробовать поискать по времени доступа или по дате создания. Для этого существует ключ -atime:
find . -type f -atime 1
В поисковой выдаче будут все файлы с любым расширением, которые использовались или были созданы за период последних 24 часов. Параметр n в ключе -atime n обозначает количество 24-часовых промежутков.

Можно также отсортировать все, что было задействовано больше суток тому:
find . -type f -atime +1

По той же логике ограничить можно истечением двух суток:
find . -type f -atime +2

А вот так мы найдем все папки, которые были использованы за последние 24 часа:
find . -type f -atime -1

Существуют и другие ключи, используемые по такому же принципу. Самые популярные из них:
-mtime n – поиск файлов, с которыми были проведены любые действия определенное время назад. Само время устанавливается по формуле n=n*24;
-ctime n – поиск по времени смены статуса или созданию конкретного файла или папки;
-amin n – папки/файлы, которые были использованы определенное время (n) назад (в минутах);
cmin n – папки/файлы с измененным статусом (создание, использование и т.п.) за определенное количество минут назад (параметр n);
mmin n – папки/файлы с измененным статусом (создание, использование и т.п.) за определенное количество секунд назад (параметр n).

Также поиск легко ограничивается владельцем директории или файла. Для этого существует ключ -user:
find . -name *.jpg -user Ivan
Данная конструкция позволяет найти все JPG изображения пользователя с именем Ivan.

Однако просто искать чаще всего недостаточно. Над найденными файлами или папками можно сразу проводить определенные операции. Давайте познакомимся с примером, в котором все найденные по маске файлы будут удалены. Для этого будем работать с ключом -exec. Он предназначен для повторения определенного действия над каждым результатом выдачи:
find /aaa -type f -name tmp* -exec rm -f {};
Пояснения по конструкции:
/aaa» – директория поиска /aaa;
-type f» – ограничиваемся файлами, папки нам не нужны;
-name tmp* – имя файла должно начинаться на tmp, на месте звездочки могут быть любые символы;
-exec rm -f {} – удаляем каждый найденный по маске файл;
{} – список аргументов заменяется;
; – логичный конец конструкции.

А вот еще один интересный пример, позволяющий установить нужные права для любых файлов, найденных в определенной папке:
find /home/nobody/public_html -type f -exec chmod 644 {};
Аналогично и для найденных папок:
find /home/nobody/public_html -type d -exec chmod 755 {};
Стоит отметить, что главный каталог /public_html также получит новые права, т.к. в результатах поиска он будет определяться текущим. Возвращаем ему правильные права простой командой:
chmod 750 public_html

Наконец, предлагаем пример более "продвинутой" работы с find. Тут мы ищем .htaccess и закрываем комментариями определенные php-переменные:
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_admin_flag" "#php_admin_flag" -- {};
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_flag" "#php_flag" -- {};
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_admin_value" "#php_admin_value" -- {};
find /home/nobody/public_html -type f -name .htaccess -exec replace "php_value" "#php_value" -- {};

Опубликовано: 09.03.2020
Просмотров: 1605
Автор: Шнайдер-хост
Источник: https://shneider-host.ru

 
Версия для печати

Мой комментарий

Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 2 и 12*:            

Заявка на хостинг
Провайдеры сами пришлют
вам свои предложения ;)


Проверка IP

Ваш IP ....... 216.73.216.122 ← Проверить
Страна ..... не определена

Проверка домена (+whois)













Выбрать все
Расширенный поиск (более 50 зон)

Traceroute

Начало маршрута



Быстрый хостинг Fozzy

Акции провайдеров

Все акции хостинг провайдеров

Сообщает сайт Хата