Я пытаюсь читать и записать в .txt
файлы в Java, но я не могу, потому что все их полномочия установлены на только для чтения. Я мог просто нажать на свойства каждого файла индивидуально и изменить их, но у меня есть много текстовых файлов, и это непрактично. Есть ли любой способ изменить глобальные полномочия для всех .txt
файлы, чтобы читать и записать?
Вы думали бы, что с этим большим количеством справки это будет работать, но даже после всех методов Zannas я не могу открыть файлы в Java, и полномочия, кажется, не изменяются.
Можно использовать команду
find /PATH/TO/FOLDER -iname '*.txt'
для списка всех имен файлов, соответствующих шаблону *.txt
(т.е. что-либо заканчивающееся .txt
) рекурсивно в каталоге /PATH/TO/FOLDER
.
, который Это полезно для проверки, какие файлы будут затронуты прежде, чем сделать любые модификации. Если Вы также хотите видеть владельца и полномочия тех файлов одновременно, здесь Вы идете:
find /PATH/TO/FOLDER -iname '*.txt' -exec stat -c '%A %U %n' '{}' \;
Теперь позволяют нам добраться до реальной команды, та, которая на самом деле изменяет полномочия.как есть Ниже, это может только изменить полномочия файлов, которыми владеет Ваш текущий пользователь, и это только добавит полномочия записи для владельца. Я рекомендую оставить его как этот, потому что иначе Вы легко ослабляете безопасность своей системы случайно.
find /PATH/TO/FOLDER -iname '*.txt' -exec chmod u+w '{}' \;
Также необходимо, конечно, заменить /PATH/TO/FOLDER
допустимым местоположением в файловой системе, но выполните эту команду только на файлах данных, которыми Вы владеете и никогда на системных каталогах, особенно не на материале, принадлежавшем полностью пользователь и особенно не с sudo
, если Вы не хотите рискнуть портить свою систему и делать ее нестабильной и менее безопасной.
Если файлы имеют расширение .txt
затем Вы могли бы использовать что-то как:
find ~/Desktop/Research -type f -iname '*.txt' -exec chmod u+w '{}' +
find
является рекурсивным по умолчанию и войдет во все подкаталоги также.
Если файлы имеют текст типа, но не имеют расширений, Вы могли бы сделать что-то как
for i in ~/Desktop/Research/*; do if [[ $(file "$i" | grep text) ]]; then echo chmod u+w "$i"; fi; done
В этой команде, echo
только для тестирования, для показа, какие изменения разрешения будут применены. Удалить echo
после тестирования для фактического изменения полномочий. На этот раз не будет никакого вывода.
Если Вы хотите, чтобы эта команда работала над подкаталогами, можно сделать это:
shopt -s globstar; for i in ~/Desktop/Research/**; do if [[ $(file "$i" | grep text) ]]; then echo chmod u+w "$i"; fi; done
Я использовал chmod u+w
который добавляет разрешение записи только для владельца. Корректируйтесь, как Вы предпочитаете, (попробуйте это сначала и если Вы все еще имеете проблемы, затем заменяете chmod o+w
или chmod 666
но остерегайтесь предоставления разрешения записи всем!) И конечно, не изменяйте полномочия системных файлов.