
Мне нужно знать, как рекурсивно применить команду 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 '
вокруг вашего {}
, иначе имя файла с пробелом внутри может все испортить. В данном случае это не проблема, но у меня есть привычка так делать.