方法#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