linux - 更改目录中满足某些条件的文件列表的权限?

标签 linux shell permissions find chmod

我目前必须更改包含约 50 个文件的目录中满足条件 g=000(意味着组没有读取权限、没有写入权限且没有执行权限)的所有文件的权限。我使用的是 Linux,并使用 Shell 命令在终端上工作。

作为示例,以下是前 6 个(我的名字已被用户替换):

-r--r----- 1 user user 0 Sep 23 19:06 fichier_1
-r-x----r- 1 user user 0 Sep 23 19:06 fichier_10
-r--r----- 1 user user 0 Sep 23 19:06 fichier_11
-rwxr----- 1 user user 0 Sep 23 19:06 fichier_12
-r-x---r-- 1 user user 0 Sep 23 19:06 fichier_13
-rw---x--- 1 user user 0 Sep 23 19:06 fichier_14

如果他们满足条件 g=---,他们也需要删除所有“其他”权限,但用户权限必须保持不变。在这种情况下,文件现在看起来像这样(第二个和第五个文件丢失了所有“其他”权限):

 -r--r----- 1 user user 0 Sep 23 19:06 fichier_1
-r-x------ 1 user user 0 Sep 23 19:06 fichier_10
-r--r----- 1 user user 0 Sep 23 19:06 fichier_11
-rwxr----- 1 user user 0 Sep 23 19:06 fichier_12
-r-x------ 1 user user 0 Sep 23 19:06 fichier_13
-rw---x--- 1 user user 0 Sep 23 19:06 fichier_14

我只能使用1个命令,所以我不能一一执行。我尝试使用 findchmod 命令,但我似乎无法使 find 命令查找带有 g==(或 000)的所有文件。

我的第一次尝试是这样的:

$ find /home/mael/tp1_inf1070/World/permissions -type f -perm g=000 -exec chmod o= {} \;

这给出了:

find: invalid mode ‘g=000’

它不适用于简单的 g==- 或仅使用 'g='。

如果我尝试只执行第一步,

$ find -perm  'g=000'

我没有得到任何输出。

我可以这样做:

$ find -perm 700, 600, 400, 707, 704, 706, 707 

要查找所有没有组权限的文件,然后如何对这些文件应用 chmod,以便删除所有“其他”权限,但其用户权限保持不变?

知道如何继续吗?谢谢。

最佳答案

尝试根据您的需求采用以下内容:

find . -not -perm /g=r -and -not -perm /g=w -and -not -perm /g=x -exec chmod o-rwx {} \;

这应该找到所有文件,没有组权限,并将删除世界(其他)的任何权限。

关于linux - 更改目录中满足某些条件的文件列表的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58175513/

相关文章:

docker - 在docker镜像中安装yarn时出现权限问题

PHP 调试 Linux

c - 如何将暂停的进程设置为后台?

linux - 你用什么命令来预览任何图像

hadoop - Hadoop:无密码SSH错误

PhpStorm 无法解锁文件 (Ionic)

linux - 引用 dotnetcore classlib 中的共享项目,并在 windows 和 linux 上进行构建

linux - 在 linux 中使用 shell 脚本从单词中读取特定字符

Linux命令给目录中的所有文件一个文件扩展名

linux - 将批处理文件转换为 Linux Shell 脚本