Назад | Перейти на главную страницу

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

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

chmod 755 -R filename

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

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

find -name filename | xargs chmod 755

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

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

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

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

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

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