思考:如何获取当前目录下文件的对应文件名、文件大小两列,并按照文件大小进行排序,并保存到文件中?
ls -l | awk '{print $9,$5}' | sort -t " " -k 2 -n -o st.txt
#如果要从大到小排序
ls -l | awk '{print $9,$5}' | sort -t " " -k 2 -n -r -o st.txt
总结下sort的用法:
Usage: sort [-bcCdfigMmnrsuz] [-kPOS1[,POS2] ... ] [+POS1 [-POS2]]
[-S memsize] [-T tmpdir] [-t separator] [-o outfile] [--batch-size size]
[--files0-from file] [--heapsort] [--mergesort] [--radixsort] [--qsort] [--mmap]
[--human-numeric-sort] [--version-sort] [--random-sort [--random-source file]] [--compress-program program] [file ...]
常用的来说:
sort [-ntkro] 文件名
-n 采取数字排序
-t 指定分隔符
-k 指定第几列
-r 反向排序
-o filename 输出到文件
即可以完成常见的排序需求了;
eg:
# 对输出文件进行排序
$ cat sort.txt
a:3
b:14
c:2
d:6
# 按照第二列大小排序
$ cat sort.txt | sort -t ":" -k 2
b:14
c:2
a:3
d:6