0

我想按大小对我作为脚本参数提供的所有目录进行排序。“-S”)代表一个案例,因为它是整个代码的一部分

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

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

感谢阅读/帮助!

4

3 回答 3

0

也许:

"-S")
  shift
  for f in "$@" ; do
    if [ -d "$f" ] ; then 
      echo "$f"
    fi
  done | xargs ls -Sd ;;
于 2013-06-02T13:23:45.350 回答
0

我同意 "mbratch" , ls -S 选项确实按大小排序,您可以使用附加的 -r 选项来反转它。那里有什么问题?

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

 $ 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

这有帮助吗?

于 2013-06-02T13:38:56.733 回答
0

也许是更明确的变体:

du -ks $(ls -d */)|sort -n|cut -f 2-
于 2013-06-02T14:31:10.100 回答