グループ書き込み専用権限を持つすべてのファイルを検索する

グループ書き込み専用権限を持つすべてのファイルを検索する

次の例のディレクトリから

$ 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
$

おすすめ記事