我想定义一个新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}'