SSH find exec chmod и права доступа

Вступление

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

Массовая смена прав доступа

Например нам нужно у всех файлов с расширением .mp3 установить права доступа 0777, у файлов с расширением .jpeg — 0644, у всех директорий с названием images установить права доступа 775.

Формат команды

find {директория} -name "{имя файла}" -type {d|f} -exec chmod {права доступа} {} \;

Файлы

Права доступа 0777 на все файлы .mp3

find /home/artemfedorov/domains -name "*.mp3" -type f -exec chmod 0777 {} \;


Права доступа 0644 на все файлы .jpeg

find /home/artemfedorov/domains -name "*.jpeg" -type f -exec chmod 0644 {} \;

Директории

Права доступа 0775 на все директории images

find /home/artemfedorov/domains -name "images" -type d -exec chmod 0775 {} \;

Объяснение

Команда find {FOLDERNAME} — как следует из названия, означает искать в указанной директории {FOLDERNAME}

Флаг −name устанавливает поиск по имени. Имя задается в кавычки "". Запись "*.mp3" — означает все файлы, название которых заканчивается на .mp3 (т.е. с расширением .mp3). Если бы звездочка не стояла, как в случае с установкой прав доступа для директории "images", ищется точное название указанное в кавычках.

Флаг −type — имеет 2 значения: f — поиск файлов; f — поиск директорий.

Флан −exec — запускает какую-либо команду, в нашем случае chmod {права доступа}. Вместо фигурных скобок — {}, подставляется найденный файл/директория и выполняется команда chmod. Запись \; — обязательный ограничитель для опции exec.

Категории

Сетевые протоколыSSH

Читайте также

Комментарии

Джамал Насрутдинов

а как просто сменить права на все файлы и папки в одной определенной папке?

Ответить