1

cygwinで次のコマンドを実行しています

$ find . -printf "%p %m %s \n" | sort -n

そして出力は以下です...

./.metadata/.log 700 17247
./.metadata/.mylyn 700 0
./.metadata/.mylyn/repositories.xml.zip 700 423
./.metadata/.mylyn/tasks.xml.zip 700 250
./.metadata/.plugins/com.google.appengine.eclipse.core/appengine-sdk-proxy.jar 700 8782

(必要な形式は、ファイル名/ 8進数の許可/バイト単位のサイズです)

Solarisで同様の出力を作成する方法を知りたいのですが。(上記のコマンドはsolarisでは機能しません)

4

4 に答える 4

1

Perlを使用して、findと同じ情報を収集できます-printf

find . -print | perl -lne '$,=" "; @s=stat $_; print $_, $s[2], $s[7]'
于 2012-06-11T22:20:59.920 に答える
0

あなたはに近づくことができます-ls

$ find . -ls | awk '{print $11 " " $3 " " $7 }'

ただし、これにより、8進パーマではなく、シンボリックパーマネントが取得されます。

于 2012-06-11T21:03:22.947 に答える
0

かなりの量のコードを書かずにこれを複製する簡単な方法は本当にありません。

http://www.sunfreeware.com/indexsparc10.html

これは、Solaris10用のsparcのインデックスです。sunfreewareから無料でダウンロードできます。x86を使用している場合は、対応するダウンロードがあります。ダウンロードしてインストールしたい

findutils-4.4.2-sol10-sparc-local.gz

それに伴ういくつかの依存関係があります。それ以外の場合は、出力を複製するためにシェル、C、またはperlを適切に書き込む必要があります。

于 2012-06-11T20:54:57.423 に答える
0

これは、OSのようなUnix / Unixで機能するはずです。つまり、gnu find、perlなどは必要ありません。

PATH=`getconf PATH`
LC_ALL=C find . -exec ls -dils {} + | awk '
function parse(s,level)
{
    p=0;
    r=substr(s, 1 ,1)
    w=substr(s, 2 ,1)
    x=substr(s, 3 ,1)
    if(r=="r") p+=4;
    if(w=="w") p+=2;
    if(x=="x") p+=1;
    if(x!="-" && x!="x") { p+=1; xtra+=level }
    return(p)
}
function s2n(s)
{
    xtra=0
    owner=parse(substr(s, 2 , 3), 4)
    group=parse(substr(s, 5 , 3), 2)
    other=parse(substr(s, 8 , 3), 1)
    return(0+(xtra*1000)+(owner*100)+(group*10)+other);
}
{
    perm=s2n($3);
    size=$7
    $1=$2=$3=$4=$5=$6=$7=$8=$9=$10=""
    sub("^ *","")
    print $0 " " perm " " size
}'
于 2012-06-12T14:25:38.383 に答える