linux文件排序

本文介绍了如何在Linux环境中利用ls、sort和tail命令组合,实现对带有递增编号的文件夹进行排序并获取最新文件夹名。通过sort的-k1.5n选项对inc_后面的数字进行自然排序,再使用tail -n1获取最新的文件夹。此外,还展示了sort命令的其他用法,如-n(数值排序)、-r(反向排序)、-k(指定字段排序)和-t(字段分隔符)等选项,以及如何结合这些选项进行复杂的数据排序操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自: https://man.linuxde.net/sort 侵删

链接取自: https://blog.youkuaiyun.com/yilovexing/article/details/79013692

最近想要做数据库的增量备份和还原   自己定义了增量备份的文件夹是inc_1-----inc_100这样的, 想要给文件夹排序, 得到最新的文件夹名字, 其中波折就不说了, 得到以下命令可以得到最新的一个inc_*文件夹名字:

ls -d inc_*/ | sort -k1.5n | tail -n 1

说说 sort -k1.5n 

指的是从第一个域的第五个字符开始到本域的最后一个字符为止的数字进行排序, 也就是说inc_后面的数字按照自然顺序排列

tail -n 1

得到最后的一个文件夹, 这里我的目的就达到了

以下从https://man.linuxde.net/sort复制以免丢失

-------------------------------------------------------------------------------------------------------------------------------------------------------------

sort命令

文件过滤分割与合并

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

语法

sort(选项)(参数)

选项

-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o<输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

参数

文件:指定待排序的文件列表。

实例

sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

[root@mail text]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5

[root@mail text]# sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5

忽略相同行使用-u选项或者uniq

[root@mail text]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5

[root@mail text]# sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5

或者

[root@mail text]# uniq sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5

sort的-n、-r、-k、-t选项的使用:

[root@mail text]# cat sort.txt
AAA:BB:CC
aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1

#将BB列按照数字从小到大顺序排列:
[root@mail text]# sort -nk 2 -t: sort.txt
AAA:BB:CC
bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1

#将CC列数字从大到小顺序排列:
[root@mail text]# sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC

# -n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号

-k选项的具体语法格式:

-k选项的语法格式:

FStart.CStart Modifie,FEnd.CEnd Modifier
-------Start--------,-------End--------
 FStart.CStart 选项  ,  FEnd.CEnd 选项

这个语法格式可以被其中的逗号,分为两大部分,Start部分和End部分。Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStartC.StartC.Start也是可以省略的,省略的话就表示从本域的开头部分开始。FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。

从公司英文名称的第二个字母开始进行排序:

$ sort -t ' ' -k 1.2 facebook.txt
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000

使用了-k 1.2,表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和 google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。guge只能屈居第四了。

只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:

$ sort -t ' ' -k 1.2,1.2 -nrk 3,3 facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000

由于只对第二个字母进行排序,所以我们使用了-k 1.2,1.2的表示方式,表示我们“只”对第二个字母进行排序。(如果你问“我使用-k 1.2怎么不行?”,当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。对于员工工资进行排 序,我们也使用了-k 3,3,这是最准确的表述,表示我们“只”对本域进行排序,因为如果你省略了后面的3,就变成了我们“对第3个域开始到最后一个域位置的内容进行排序” 了。

### 回答1: Linux文件排序命令有很多,常用的有以下几种: 1. ls命令:ls命令可以按照文件名、文件大小、文件修改时间等进行排序。例如,ls -lS可以按照文件大小从大到小排序。 2. sort命令:sort命令可以对文件内容进行排序。例如,sort -n可以按照数字大小排序,sort -r可以倒序排序。 3. find命令:find命令可以按照文件属性进行排序。例如,find . -type f -printf '%T@ %p\n' | sort -n可以按照文件修改时间排序。 4. du命令:du命令可以按照文件大小进行排序。例如,du -sh * | sort -h可以按照文件大小从小到大排序。 5. awk命令:awk命令可以对文件内容进行排序和处理。例如,ls -l | awk '{print $5 " " $9}' | sort -n可以按照文件大小排序。 以上是常用的几种Linux文件排序命令,可以根据实际需求选择使用。 ### 回答2: Linux文件排序命令是一种非常重要的文件操作命令,可以帮助我们对文件进行按照名称、大小、时间等不同方式进行排序。下面是一些常见的Linux文件排序命令: 1. ls命令中的-S选项:按文件大小进行排序。使用ls -S命令可以将文件按照大小进行排序,从大到小。 2. ls命令中的-t选项:按时间进行排序。使用ls -t命令可以将文件按照修改时间进行排序,最新的文件排在前面。 3. ls命令中的-r选项:逆序排序。使用ls -r命令可以将文件逆序排列,从后往前。 4. sort命令:对文件行进行排序。sort命令用于对文件行进行排序,默认按照字典顺序进行排序。 5. du命令中的-s选项:按大小进行汇总。使用du -s命令可以将不同文件夹下所有文件的大小进行汇总,并按文件大小进行排序。 以上这些 Linux 文件排序命令都非常简单易用,但是对于不同的需求,我们可以结合这些命令进行组合使用,从而更加灵活的找到我们想要的排序结果。 ### 回答3: 在Linux操作系统中,有多种方法可以对文件进行排序排序可以帮助我们更好地组织文件,提高文件的可读性和可用性。以下是一些常用的Linux文件排序命令。 1. sort sort命令可以按字母顺序对文本文件进行排序。如果想要按照数字排序,可以使用-n选项。如果想要排序结果去重,可以使用-u选项。sort命令还可以用于对文件的特定字段进行排序,例如使用-k选项。 2. ls ls命令可以列出当前目录下的文件列表。通过在ls命令中添加不同的选项,可以按照大小、修改时间等条件对文件进行排序。例如,使用-S选项按文件大小进行排序,使用-t选项按修改时间排序。 3. find find命令可以帮助我们查找特定目录下的文件,并可以按照不同的排序条件进行输出。例如,要按文件修改时间进行排序,可以使用-mtime选项,要按文件大小进行排序,可以使用-size选项。 4. du du命令可以计算文件夹占用的硬盘空间大小,并可以按照不同的排序条件进行显示。通过使用不同的选项,可以按文件大小、文件夹深度等条件进行排序。 以上是一些常用的Linux文件排序命令。使用这些命令可以轻松对文件进行排序和组织,提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值