0

スクリプトでパラメーターとして指定したすべてのディレクトリをサイズで並べ替えたいと思います。「-S」) は、コード全体の一部であるため、ケースを表します。

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

これは、パラメータ/ディレクトリを名前でソートした方法ですが、サイズでソートするソリューションはありますか?

読んでくれて/助けてくれてありがとう!

4

3 に答える 3

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

これは役に立ちますか?

于 2013-06-02T13:38:56.733 に答える
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

たぶん、より明示的なバリアント:

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