我在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
(必需的格式是八进制/大小的文件名/权限,以字节为单位)
我想知道如何在Solaris上创建类似的输出。 (上面的命令对solaris不起作用)
答案 0 :(得分:1)
您可以使用Perl收集与查找-printf
:
find . -print | perl -lne '$,=" "; @s=stat $_; print $_, $s[2], $s[7]'
答案 1 :(得分:0)
在没有编写大量代码的情况下,没有简单的方法可以复制它。
http://www.sunfreeware.com/indexsparc10.html
这是针对Solaris 10 sparc的索引 - 免费下载sunfreeware。如果您使用的是x86,则会进行相应的下载。您想下载并安装
findutils-4.4.2-sol10-sparc-local.gz
有一些依赖关系。否则你会面临写一些shell,C或perl来复制输出。
答案 2 :(得分:0)
你可以靠近-ls
:
$ find . -ls | awk '{print $11 " " $3 " " $7 }'
但是,这将获得符号权限,而不是八进制权限。
答案 3 :(得分:0)
这适用于任何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
}'