HostDB.ru
 
Логин

Пароль



или войдите через соцсеть:
провайдеров: 56, переходов на сайты провайдеров сегодня: 23
Хостинг IwiHost

Голосование

Какую версию PHP вы сейчас используете?










Анекдот




- Команда 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
Просмотров: 2138
Автор: Шнайдер-хост
Источник: https://shneider-host.ru

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

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

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

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

Выделенный сервер
1 x 1000 Гб SATA, RAM 4096 Мб, 2 x 2400 Мгц Atom Dual Core, неогр. трафик.
999 руб.
Хостинг провайдер QCKL Network Solutions
2vCPU
20 Гб на диске, RAM 2048 Мб, 3400 Мгц, неогр. трафик.
908 руб.
Хостинг провайдер HSTQ HOSTING
Titan
30 Гб на диске, RAM 1025 Мб, 3700 Мгц, неогр. трафик.
1399 руб.
Хостинг провайдер QCKL Network Solutions

Проверка IP

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

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













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

Traceroute

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




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

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