다음 예제 디렉터리에서
$ 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
find
모든 파일을 원해요그룹권한은 바로 -w-
그것 입니다 2
(쓰기 권한만 해당).
나는 사용하고있다
$ bash --version
GNU bash, versione 4.4.23(1)-release (amd64-portbld-freebsd12.0)
FreeBSD 12에서. GNU가 아닙니다 find
.
내 시도는
$ find . -perm -g+w
./file2
./file3
./file5
그러나 이것은 다음과 같은 모든 파일을 반환합니다.적어도그룹 쓰기 권한, 해당 그룹만 허용하는 파일을 나열하고 싶습니다.쓰다. 어떻게 해야 하나요?
답변1
다른 권한 비트가 설정된 파일을 제외하는 조건을 더 추가할 수 있습니다.
find . -perm -g+w ! -perm -g+r ! -perm -g+x
또는 (Steeldriver 의견에서 제안한대로)
find . -perm -g+w ! -perm /g+rx
예:
$ 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
$