2013-06-02 29 views
0

我想我所有的目录,我给作为与大小我的脚本参数排序。 的“-S”)代表的情况下,因为它是一个整体的代码击:排序参数,按大小

"-S") 
shift 
for f in "[email protected]" ; do 
if [ -d "$f" ] 
then 
echo "$f" 
fi 
done | sort 
;; 

这是我如何按名称排序我的参数/目录中的一部分,是现在有按大小排序它的解决方案?

日Thnx读/帮助!

+0

由大小不'LS -S'已经排序? – lurker

+0

是,但我需要我的参数,而不是在上真 – user2252399

+0

我不太以下的项目进行排序。可以给'ls -S'一个文件/目录模式列表,所以你可以澄清你的意思是什么“我的参数”?他们是什么,他们在哪里? – lurker

回答

0

我同意“mbratch”,LS -S选项按大小排序呢,你可以扭转一个额外的-r选项。那里有什么问题?

如果我不得不用另一种方式,我不会单独排序使用,我宁愿做这样的事情:

$ find . -size +20 | xargs du -sh | sort -n ## put this in your for - list part 

输出:

16K  ./.bash_history 
16K  ./libdata 
24K  ./.viminfo 
24K  ./test.sh 
28K  ./assign_chain/stuff/rpt 
52K  ./c_prac/t_malloc.exe 
52K  ./c_prac/wrt.exe 
64K  ./assign_chain/za_ch.csv 
124K ./assign_chain/stuff/b_ch.csv 

这是否帮助?

+0

是的,ty非常多,但是有一点问题,是否有可能将列表翻转过来,所以124 K首先出现? – user2252399

+0

是啊...有一个-r选项可以用sort ::'find来反转。 - 大小+20 | xargs du -sh |排序-nr',那它 – nsd

+0

TY!对不起,愚蠢的问题:P – user2252399

0

也许:

"-S") 
    shift 
    for f in "[email protected]" ; do 
    if [ -d "$f" ] ; then 
     echo "$f" 
    fi 
    done | xargs ls -Sd ;; 
+0

这是完美的!非常先生! – user2252399

0

也许更加明确的变体:

du -ks $(ls -d */)|sort -n|cut -f 2- 
+0

你的代码是正确的,但我怎么可以用这个在我上面的代码? – user2252399

+0

ooh nvm我发现它,我不得不把xargs放在句子之前:) Ty for help – user2252399