
Как предоставить всем пользователям разрешение на чтение всех файлов *.java в текущем каталоге и всех его подкаталогах?
Я также хочу назначить всем файлам размером не менее 1 килобайта в текущем каталоге и всех подкаталогах группу администратора.
решение1
Альтернатива:Чтобы установить разрешение на чтение для всех файлов .java в текущем каталоге, используйте эту команду:
chmod -R 444 *.java
Чтобы назначить всем файлам размером не менее 1 килобайта в текущем каталоге и всех подкаталогах группу администратора.
find /yourdirectorypath -size +1k -exec chgrp admin {} \;
Примечание:«-R» указывает на рекурсивность, которая также будет охватывать ваши подкаталоги
решение2
Как предоставить всем пользователям разрешение на чтение всех файлов *.java в текущем каталоге и всех его подкаталогах?
В bash ≥4.0 и zsh:
chmod a+r ./**/*.java
В любой POSIX-совместимой системе (т. е. любой нестареющей версии Unix и т. д.):
find . -name '*.java' -exec chmod a+r {} +
Назначить всем файлам размером не менее 1 килобайта в текущем каталоге и всех подкаталогах группу администратора.
В зш:
chgrp admin ./**/*(.L+1023)
В любой системе, совместимой с POSIX:
find . -type f -size +1023c -exec chgrp admin {} +
решение3
Используйте find и xargs
find . -name \*.java | xargs chmod o+r
или
find . -name \*.java -print0 | xargs -0 chmod o+r
Вторая версия обрабатывает пробелы в именах файлов и каталогов.
Возможно, вам также придется исправить права доступа к каталогам.
find . -type d -print0 | xargs -0 chmod o+rx
Вы можете избежать обновления разрешений, которые уже правильны. Проверьте страницу руководства, чтобы найти и просмотреть раздел о разрешениях.
решение4
Чтобы установить разрешение на чтение для всех файлов .java в текущем каталоге, используйте эту команду
chmod +r *.java