Bow*_*ark 2 freebsd permissions find files
在以下示例目录中
$ ls -l
total 0
-rw-r--r-- 1 user testgroup 0 12 feb 12:00 file1
-rw-rw-r-- 1 user testgroup 0 12 feb 12:00 file2
-rw--w-r-- 1 user testgroup 0 12 feb 12:00 file3
-rw-r--r-- 1 user testgroup 0 12 feb 12:00 file4
-rw-rwxr-- 1 user testgroup 0 12 feb 12:00 file5
Run Code Online (Sandbox Code Playgroud)
我想要所有具有组find权限的文件,即(仅写入权限)。-w-2
我在用
$ bash --version
GNU bash, versione 4.4.23(1)-release (amd64-portbld-freebsd12.0)
Run Code Online (Sandbox Code Playgroud)
在 FreeBSD 12 上。它不是 GNU find。
我的尝试是
$ find . -perm -g+w
./file2
./file3
./file5
Run Code Online (Sandbox Code Playgroud)
但这会返回至少具有组写权限的所有文件;我想改为列出其组只允许写入的文件。如何做到这一点?
您可以添加更多条件来排除设置了其他权限位的文件。
find . -perm -g+w ! -perm -g+r ! -perm -g+x
Run Code Online (Sandbox Code Playgroud)
或(如 Steeldriver 评论中所提议)
find . -perm -g+w ! -perm /g+rx
Run Code Online (Sandbox Code Playgroud)
例子:
$ ls -l file*
-rw-r--r-- 1 bodo bodo 0 Feb 12 12:50 file1
-rw-rw-r-- 1 bodo bodo 0 Feb 12 12:50 file2
-rw--w-r-- 1 bodo bodo 0 Feb 12 12:50 file3
-rw--wxr-- 1 bodo bodo 0 Feb 12 12:50 file4
-rw-rwxr-- 1 bodo bodo 0 Feb 12 12:50 file5
$ find . -perm -g+w ! -perm -g+r ! -perm -g+x
./file3
$
$ find . -perm -g+w ! -perm /g+rx
./file3
$
Run Code Online (Sandbox Code Playgroud)