如何使用 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

如果您的 shell 在 $COLUMNS 中具有终端的宽度,那么这样会更好:

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

答案2

另一种方式awk

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

相关内容