方法#1-統計
statコマンドを使用して、許可ビットを取得できます。statほとんどのUnixで利用できます(OSX、BSD、AIXではありません)。これは、OSXとBSDを除いて、ほとんどのUnixで動作するはずです。
$ stat -c "%a" <file>
例
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
次のコマンドを使用します。
$ stat -c "%a" afile.txt
664
シンプルなものgrepを使用して、グループの権限モードが6または7かどうかを確認します。
$ stat -c "%a" afile.txt | grep ".[67]."
OSXとBSDの場合stat、この形式のstat -f(またはおそらくstat -x)を使用し、それに応じて解析する必要があります。オプションstatが異なるため、このコマンドをコマンドにラップlsb_release -aして、OSに基づいて適切なバージョンを呼び出すことができます。理想的ではありませんが実行可能です。これlsb_releaseはLinuxディストリビューションでのみ利用可能であることを理解してください。そのため、他のUnix OSをテストするには、別の方法を考案する必要があります。
方法#2-検索
このコマンドはあなたのために役立つかもしれませんが。私が使用可能findとprintfスイッチを。
例
$ find a -prune -printf '%m\n'
664
方法#3-Perl
カバーしようとしているOSによっては、Perlの方が移植性の高い方法かもしれません。
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
注:上記は、Perlのstat()関数を使用してファイルシステムのビットを照会します。
配列を使用@pvせずに、の出力をstat()直接処理することで、これをよりコンパクトにすることができます。
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664