Как изменить .txt глобальные полномочия?

enter image description hereЯ пытаюсь читать и записать в .txt файлы в Java, но я не могу, потому что все их полномочия установлены на только для чтения. Я мог просто нажать на свойства каждого файла индивидуально и изменить их, но у меня есть много текстовых файлов, и это непрактично. Есть ли любой способ изменить глобальные полномочия для всех .txt файлы, чтобы читать и записать?

Вы думали бы, что с этим большим количеством справки это будет работать, но даже после всех методов Zannas я не могу открыть файлы в Java, и полномочия, кажется, не изменяются. enter image description here

4
задан 25 November 2016 в 16:51

2 ответа

Можно использовать команду

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, если Вы не хотите рискнуть портить свою систему и делать ее нестабильной и менее безопасной.

2
ответ дан 1 December 2019 в 09:13

Если файлы имеют расширение .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 но остерегайтесь предоставления разрешения записи всем!) И конечно, не изменяйте полномочия системных файлов.

5
ответ дан 1 December 2019 в 09:13

Другие вопросы по тегам:

Похожие вопросы: