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}'

관련 정보