您能更改 Linux 中除一个目录之外的所有文件的权限吗?

您能更改 Linux 中除一个目录之外的所有文件的权限吗?

有没有办法通过单个 Linux 命令行命令更改除单个目录之外的所有文件/目录的权限?

答案1

假设您希望递归地为当前工作目录中的文件夹内容设置权限位 755,除了名为“要排除的文件夹名称”

 chmod 755 -R $(ls | awk '{if($1 != "nameOfFolderToBeExcluded"){ print $1 }}')

答案2

您可以使用find搜索与给定文件名不匹配的所有文件,并对exec找到的所有此类文件执行命令:

假设您需要排除目录test并向所有其他文件和目录授予文件权限 755。这将从树的顶部执行。

find ! -name test -exec chmod 755 {} \;

已测试

mtk@mtk4-laptop:$ touch a1.txt a2.txt a3.txt test
mtk@mtk4-laptop:$ ls -lrt
total 0
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 test
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 a3.txt
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 a2.txt
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 a1.txt
mtk@mtk4-laptop:$ find ! -name test -exec chmod 777 {} \;
mtk@mtk4-laptop:$ ls -lrt
total 0
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 test
-rwxrwxrwx 1 mtk mtk 0 Sep 17 23:55 a3.txt*
-rwxrwxrwx 1 mtk mtk 0 Sep 17 23:55 a2.txt*
-rwxrwxrwx 1 mtk mtk 0 Sep 17 23:55 a1.txt*
mtk@mtk4-laptop:$ 

文件的文件权限test保持不变。目录也是如此。

答案3

什么壳?

如果你正在跑步狂欢(如果你使用的是 Linux),你可以查看 extglob,它为你提供了更多的通配符选项,包括“负通配符”!()

shopt -s extglob
chmod 774 !(file-to-ignore)

答案4

只需一个简单的命令就可以做到:-

chmod 755 /x/y/!(abc)

其中x/y/z= 路径。

abc= 要排除的文件夹/文件的名称

相关内容