linux cmd 如何删除文件夹中所有没有类别所有者、读取、写入、执行权限的文件

linux cmd 如何删除文件夹中所有没有类别所有者、读取、写入、执行权限的文件

在 Linux 命令提示符中,我有一个文件夹,其中有大约 10 个具有不同权限的文件,如何在一个命令中删除所有没有所有者权限、读取、写入或执行的文件?

答案1

您可以使用命令-perm的测试find来根据文件的权限来识别文件。特别是,

   -perm /mode
          Any  of the permission bits mode are set for the file.

例如,

$ ls -l subdir
total 0
----r--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file0
---xr--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file1
--w-r--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file2
--wxr--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file3
-r--r--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file4
-r-xr--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file5
-rw-r--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file6
-rwxr--r-- 1 steeldriver steeldriver 0 Oct 15 19:15 file7

然后

$ find subdir ! -perm /u=rwx
subdir/file0

查找其所有者没有读、写或执行权限的文件。

一旦您确信它识别了正确的文件,您就可以添加-delete命令来删除它们:

find subdir ! -perm /u=rwx -delete

如果愿意,您可以使用八进制700代替符号。u=rwx

相关内容