Bash

如何使用ls分組並僅顯示目錄名稱的第一個單詞?

  • November 1, 2013

我想定義一個新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名稱。

這應該做你想要的:

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

如果你的 shell 在 $COLUMNS 中有你終端的寬度,那麼這樣會更好:

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

另一種方式awk

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

引用自:https://unix.stackexchange.com/questions/98456