MRK*_*RKR 11 ls sort file-management files
鉴于以下文件:
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
XYZ38390.SC00.Statue_WKP
Run Code Online (Sandbox Code Playgroud)
我如何根据SC值列出它们,如下所示:
XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
Run Code Online (Sandbox Code Playgroud)
ter*_*don 14
在这种特殊情况下,您的文件名不包含任何空格或其他奇怪字符,您可以使用ls它并通过管道传输sort:
$ ls -d -- *.SC* | sort -t. -k2
XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
Run Code Online (Sandbox Code Playgroud)
该-t套字段分隔符和-k2告诉sort排序基于起始与所述2行的部分第二字段(使用-k2,2用于第二场只)。
对于更复杂的情况,您可以打印每个文件名,后跟 NULL 字符 ( \0),然后sort使用其-z选项通过管道告诉GNU读取以 NULL 分隔的行,最后,使用tr将其更改\0回\n:
printf '%s\0' *SC* | sort -zt. -k2 | tr '\0' '\n'
Run Code Online (Sandbox Code Playgroud)