lsを使用してディレクトリ名の最初の単語のみをグループ化して表示するにはどうすればよいですか?

lsを使用してディレクトリ名の最初の単語のみをグループ化して表示するにはどうすればよいですか?

lsこれを行う新しいコマンドを定義したいと思います。

一般コマンドを使用するときの最初のコマンドは次のとおりですls

$ls
undergrade.AI              undergrade.KDD
undergrade.AI2             undergrade.micro
undergrade.ANN             undergrade.OOT
undergrade.autoMata        undergrade.OS
undergrade.bulletin        undergrade.parallelAndDistributedProgramming
undergrade.CG              undergrade.pop
undergrade.CLP             undergrade.PPL
undergrade.comNet          undergrade.researchingMethod
undergrade.comOr           undergrade.SA
undergrade.comSec          undergrade.SE
undergrade.DBMS            undergrade.softwareTesting
undergrade.discrete        undergrade.webApps
code.ajax  code.cc  code.erl  code.html    code.js    code.pl     code.py   
code.sage  code.x3d code.c    code.cl      code.go    code.jquery code.lisp  
code.pro   code.roo code.sh   code.xml

私が望む新しいlsの場合:

$ls_new
undergrade  code

私が入力したときに最初の単語だけが表示されるようにしたいと思いますls_new

なぜこのコマンドが必要ですか?

category.subjなぜなら、私は通常を使うときにlsフィルタリング、グループ化、そして表示するためにいくつかのコマンドが必要ですが、名前だけが必要だからですcategory

答え1

これにより、目的のタスクが実行されます。

ls|sed 's/\..*//'|sort -u|column

シェルの端末幅が$ COLUMNSの場合は、次の方が良いです。

ls|sed 's/\..*//'|sort -u|column -c $COLUMNS

答え2

別の方法awk

ls | awk -F. '$1 != p { p=$1; print $1}'

関連情報