答案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
,除非您想冒险弄乱您的系统并使其不稳定且不太安全。