Как рекурсивно применить команду CHMOD к любому файлу с определенным именем в Linux?

Как рекурсивно применить команду CHMOD к любому файлу с определенным именем в Linux?

Мне нужно знать, как рекурсивно применить команду CHMOD только к файлам, имеющим определенное имя?

chmod 755 -R filename

Что-то вроде вышеописанного, но это должно применяться ко всем filename, что существует в любых подпапках.

решение1

Это позволит рекурсивно найти все файлы с именем filename из текущего каталога и передать их в chmod.

find -name filename | xargs chmod 755

См. man-страницы для findи xargsдля более продвинутых опций. В частности, посмотрите на -print0флаг и соответствующий -0, xargsесли вы получаете ошибки о файлах с пробелами в имени.

решение2

В find также есть параметр exec, который делает то же самое:

find . -name filename -exec chmod 755 {} \;

решение3

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

find . -name filename -exec chmod 755 '{}' +

Вы всегда должны ставить a 'вокруг вашего {}, иначе имя файла с пробелом внутри может все испортить. В данном случае это не проблема, но у меня есть привычка так делать.

Связанный контент