Neste caso em particular, onde os nomes dos seus arquivos não contêm nenhum espaço em branco ou outros caracteres estranhos, você pode usar ls
e canalizá-lo através de sort
:
$ ls -d -- *.SC* | sort -t. -k2
XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
O -t
define o delimitador de campo e o -k2
diz sort
para classificar com base na parte da linha que começa com o campo 2 nd (use -k2,2
para o segundo campo somente ).
Para casos mais complexos, você poderia imprimir cada nome de arquivo seguido pelo caractere NULL (
), então canalizar para GNU sort
-z
usando sua opção tr
para dizer a ele ler linhas delimitadas por NULL e, finalmente , use
para alterar o %code% de volta para %code% : \n
printf '%s$ ls -d -- *.SC* | sort -t. -k2
XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
' *SC* | sort -zt. -k2 | tr 'printf '%s%pre%' *SC* | sort -zt. -k2 | tr '%pre%' '\n'
' '\n'