パーミッションを数値で取得するにはlsではなくstatを使う
既存の環境のコピーを別なOSに作る必要があったので、lsの結果をベースにmkdir, chmod, chwonを生成するシェルを作って見ることに。
しかし、いきなり挫折。というのもls -lの結果は通常下記の通り
% ls -l /var/ 合計 12 drwxr-xr-x 1 root root 134 3月 2 23:42 cache drwxr-xr-x 1 root root 14 3月 5 02:28 db drwxr-xr-x 1 root root 64 4月 3 2012 empty drwxr-xr-x 1 root root 282 5月 27 2012 lib
これだとパーミッションを直接chmodに食わせることができない... なにか良い方法は無いかと考えていたところ。
>@Mozk_
@koduki stat(1)でいけません?
と教えてもらう。という訳でその線で調べてみたらビンゴ! 下記コマンドでちゃんと755とか数値でとれました。
% stat --format='%a %U:%G' /var/* 755 root:root 755 root:root 755 root:root 755 root:root
ディレクトリ名はフルパスで欲しかったのでfindと組み合わせてみた
% find /usr/lib/ruby/1.9.1/test/ -type d|awk '{print "echo \"`stat --format=_q_%a %U:%G_q_ "$1"` "$1"\""}'|sed "s/_q_/'/g"|sh |head 755 root:root /usr/lib/ruby/1.9.1/test/ 755 root:root /usr/lib/ruby/1.9.1/test/unit
これで必要なパラメータはとれたので、後はawkとかでコマンド生成するだけ。簡単な環境構築には便利かも。
では、Happy Hacking!