2013-06-02 30 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