Как изменить права доступа к нескольким файлам, найденным с помощью команды find?

11

У меня есть каталог с многочисленными файлами. Часть файлов имеет 755разрешения, а другая часть имеет 644разрешения. Я хотел бы конвертировать файлы с 755разрешениями 644. Я пробовал следующую строку, запустив ее из самого каталога:

find . -perm 755 -exec chmod 644 {}\;

Однако в результате разрешение изменилось только для самого каталога, и после его изменения я обнаружил, что права доступа к файлам остались неизменными. Я что-то пропустил?

Евгений С
источник
Ваша команда удаляет исполняемый бит из каталога, делая невозможным chdir к нему и просматривая файлы, которые он содержит. Вот почему команда не работает. Попробуй find ./ -type f -exec chmod -x {} \;вместо этого.
Шадур

Ответы:

17

Хорошо, похоже, я нашел проблему. Кажется, между и и должен быть обязательный пробел , поэтому команда будет выглядеть так:{}\;

find . -perm 755 -exec chmod 644 {} \;

Скорее, чем:

find . -perm 755 -exec chmod 644 {}\;

Также проблему с изменением прав доступа к каталогу можно решить, добавив -type fфлаг, поэтому он будет выглядеть следующим образом:

find . -type f -perm 755 -exec chmod 644 {} \;
Евгений С
источник
6
Вы можете использовать +вместо, \;чтобы уменьшить количество создаваемых подпроцессов.
Кевин
-type dнайдете каталоги. -type fнайдет файлы.
Мик Т