Как вы » При использовании интерполяции {}
имя файла остается без кавычек, поэтому это немного похоже на запуск chmod u = rw some (filename) .txt
, который завершится ошибкой, как вы описали .
Одно из решений - переместить {}
из строки в кавычках, чтобы find
мог правильно обработать его самостоятельно.
Другая проблема заключается в том, что вы, кажется, разделяете команду chmod
, причем часть ее находится внутри su
, а часть - снаружи. (Продемонстрируйте это, заменив sh
на echo
.) Результатом является неработающая команда, и я не совсем уверен, чего вы пытаетесь достичь.
Попробуйте это (удалите echo
, когда вы уверены, что он делает то, что вы хотите):
su -c "
find . -group groupname -exec echo chmod -R u+w,go+r,go-w {} \;
"
Вы действительно собираетесь применить рекурсивный chmod
к каждому каталогу, который происходит иметь группу имя группы
? Возможно, вам следует рассмотреть -тип d
в наборе предикатов.