Linux 在不丢失原始排序顺序的情况下进行子排序?

Linux 在不丢失原始排序顺序的情况下进行子排序?,linux,bash,sorting,Linux,Bash,Sorting,我在一个文件夹中有一堆文件,它们有一个通用的命名结构,如下所示: FOOBAR_1A.8_Alice.pdf FOOBAR_1A.9_Bob.pdf FOOBAR_1B.10_Foo.pdf FOOBAR_1B.11_Bar.pdf FOOBAR_1B.12_Jack.pdf FOOBAR_1B.1_Jill.pdf FOOBAR_1B.2_John.pdf FOOBAR_1B.3_Mary.pdf 为了实现上述排序顺序,我有一个第一次排序迭代,如下所示: FOOBAR_1A.8_Alice.

我在一个文件夹中有一堆文件,它们有一个通用的命名结构,如下所示:

FOOBAR_1A.8_Alice.pdf
FOOBAR_1A.9_Bob.pdf
FOOBAR_1B.10_Foo.pdf
FOOBAR_1B.11_Bar.pdf
FOOBAR_1B.12_Jack.pdf
FOOBAR_1B.1_Jill.pdf
FOOBAR_1B.2_John.pdf
FOOBAR_1B.3_Mary.pdf
为了实现上述排序顺序,我有一个第一次排序迭代,如下所示:

FOOBAR_1A.8_Alice.pdf
FOOBAR_1A.9_Bob.pdf
FOOBAR_1B.10_Foo.pdf
FOOBAR_1B.11_Bar.pdf
FOOBAR_1B.12_Jack.pdf
FOOBAR_1B.1_Jill.pdf
FOOBAR_1B.2_John.pdf
FOOBAR_1B.3_Mary.pdf
find-键入f-名称“*.pdf”-打印|剪切-d'/'-f2 |排序

但是如您所见,12年11月10日打印在1/2/3之前

我又试着用管道重新分类:

find-键入f-名称“*.pdf”-打印|剪切-d'/'-f2 |排序|排序-t'.-k 2n

但是这会打乱先前的排序工作,并打印出如下输出:

FOOBAR_1A.7_Alice.pdf
FOOBAR_1B.7_Bob.pdf
FOOBAR_2A.7_John.pdf
FOOBAR_2B.7_Mary.pdf
FOOBAR_2C.7_Foo.pdf
FOOBAR_1A.8_Bar.pdf
FOOBAR_1B.8_Jack.pdf
FOOBAR_2A.8_Jill.pdf
总之,我想要的排序输出是:

  • FOOBAR\u NA.N
    应按数字顺序排列第一个字符(即
    FOOBAR\u 1
    然后
    FOOBAR\u 2
    等)
  • FOOBAR\u NA.N
    应按照第二个字符的字母顺序进行排序(即
    FOOBAR\u 1A
    然后
    FOOBAR\u 1B
    等)
  • FOOBAR\u NA.N
    最终应按第一个点后的数字排序(即
    FOOBAR\u 1A.1
    然后
    FOOBAR\u 1A.2
    等)

  • 您可以尝试
    -V
    (按版本排序):


    dir或ls也可以

    dir -1v *.pdf
    


    美好的好主意,又好又短!但是假设GNU dir/ls在文本中带有
    -v自然排序(版本)编号。BSD是非图形字符的强制未编辑打印;当输出不是到终端时,这是默认值。
    。因此,较长的剪切/排序版本更易于“移植”。不过我还是会给你一个+1!:)
    ls -1v *.pdf