Como alterar permissões globais .txt?

4

Estou tentando ler e gravar em .txt arquivos em java, mas não consigo, porque todas as suas permissões estão configuradas para somente leitura. Eu poderia simplesmente clicar nas propriedades de cada arquivo individualmente e alterá-las, mas tenho muitos arquivos de texto e isso é impraticável. Existe alguma maneira de alterar as permissões globais para todos os arquivos .txt para ler e escrever?

Você pensaria que com tanta ajuda isso funcionaria, mas mesmo depois de todos os métodos do Zannas eu não consigo abrir os arquivos em java e as permissões não parecem mudar.

    
por Erlandas Aksomaitis 24.11.2016 / 23:34

2 respostas

5

Se os arquivos tiverem uma extensão .txt , você poderá usar algo como:

find ~/Desktop/Research -type f -iname '*.txt' -exec chmod u+w '{}' +

find é recursivo por padrão e também entrará em todos os subdiretórios.

Se os arquivos forem do tipo , mas não tiverem extensões, você poderá fazer algo como

for i in ~/Desktop/Research/*; do if [[ $(file "$i" | grep text) ]]; then echo chmod u+w "$i"; fi; done

Nesse comando, echo é apenas para teste, para mostrar quais alterações de permissão serão aplicadas. Remova echo após o teste para realmente alterar as permissões. Desta vez, não haverá saída.

Se você quiser que este comando funcione em subdiretórios, você pode fazer isso:

shopt -s globstar; for i in ~/Desktop/Research/**; do if [[ $(file "$i" | grep text) ]]; then echo chmod u+w "$i"; fi; done

Eu usei chmod u+w , o que adiciona permissão de gravação apenas para o proprietário. Ajuste como preferir, (tente isso primeiro e, se ainda tiver problemas, substitua por chmod o+w ou chmod 666 , mas tenha cuidado em dar permissão de gravação para todos!) E, claro, não altere as permissões dos arquivos do sistema. / p>     

por Zanna 24.11.2016 / 23:58
2

Você pode usar o comando

find /PATH/TO/FOLDER -iname '*.txt'

para listar todos os nomes de arquivos que correspondem ao padrão *.txt (ou seja, qualquer coisa que termine com .txt ) recursivamente dentro do diretório /PATH/TO/FOLDER .

Isso é útil para verificar quais arquivos serão afetados antes de fazer qualquer modificação. Se você também quiser ver o proprietário e as permissões desses arquivos ao mesmo tempo, aqui vai:

find /PATH/TO/FOLDER -iname '*.txt' -exec stat -c '%A %U %n' '{}' \;

Agora vamos ao comando real, aquele que realmente modifica as permissões. Como está abaixo, ele só pode alterar as permissões dos arquivos que seu usuário atual possui e só adicionará permissões de gravação para o proprietário. Eu recomendo deixar assim, porque senão você facilmente enfraquece a segurança do seu sistema por acidente.

find /PATH/TO/FOLDER -iname '*.txt' -exec chmod u+w '{}' \;

Além disso, você deve obviamente substituir /PATH/TO/FOLDER por um local válido em seu sistema de arquivos, mas por favor execute este comando apenas nos arquivos de dados que você possui e nunca nos diretórios do sistema, especialmente em coisas que pertencem ao usuário root e especialmente não com sudo , a menos que você queira arriscar bagunçar seu sistema e torná-lo instável e menos seguro.

    
por Byte Commander 24.11.2016 / 23:53