Bash:按大小排序参数

时间:2013-06-02 13:07:23

标签: bash directory

我想按照尺寸对我的脚本作为参数排序。 “-S”代表一个案例,因为它是整个代码的一部分

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

这是我按名称对参数/目录进行排序的方法,现在是否有按大小排序的解决方案?

Thnx用于阅读/帮助!

3 个答案:

答案 0 :(得分:0)

也许:

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

答案 1 :(得分: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

这有帮助吗?

答案 2 :(得分:0)

也许更明确的变体:

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