如何更改.txt 全局权限?

如何更改.txt 全局权限?

在此处输入图片描述我试图用 Java 读写.txt文件,但无法做到,因为所有文件的权限都设置为只读。我可以单独单击每个文件的属性并更改它们,但我有很多文本文件,这不切实际。有没有办法将所有.txt文件的全局权限更改为读写?

您可能会认为,有了这么多的帮助,它就会起作用,但即使使用了 Zannas 的所有方法,我仍然无法在 java 中打开文件,而且权限似乎没有改变。 在此处输入图片描述

答案1

如果文件有扩展名.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但请注意不要向所有人授予写入权限!)当然,不要更改系统文件的权限。

答案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用文件系统中的有效位置替换,但请仅对您拥有的数据文件执行此命令,而不要对系统目录执行此命令,尤其是不要对 root 用户拥有的内容执行此命令,尤其是不要使用sudo,除非您想冒险弄乱您的系统并使其不稳定且不太安全。

相关内容