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