储备点儿有用的 linux shell

Feb 14 2020

Linux shell 命令博大精深,平日只取其皮毛,深感遗憾,今天整理一些很好用但平时用得不多的命令,便于写自动化脚本时做快速查询用

1. ls -t 按时间排序

按文件修改时间新到旧排列,如果要改为旧到新,则使用 ls -tr, 其中 -r 是反转命令 -t

配合 -l 使用更佳

1
2
3
4
5
# 时间新到旧
ls -lt

# 时间旧到新
ls -ltr

2. ls -S 按大小排序

按文件大小从大到小排列,如果要从小到大,则使用 ls -hS

配合 -h 使用能按人类可读性更高的方式显示文件大小

1
2
3
4
5
# 文件从大到小
ls -lhS

# 文件从小到大
ls -lhSr

3. 统计目录和文件数量

1
2
3
4
# grep 查询 - 开头,也就是文件,wc 统计数量
ls -l | grep "^-" |wc -l

ls -l | grep "^d" |wc -l

4. 列出文件的绝对路径

1
2
3
# pwd 输出当前目录,通过 sed 添加当前文件名到其中

ls | sed "s:^:`pwd`/:"

5. 统计文件中重复的行

1
2
3
4
5
6
7
# 输出文件中重复行的个数,sort 先进行排序,然后 uniq 才能对连续的重复行生效
sort <file> | uniq -c

# -c 命令统计重复的个数
4 test1111
5 test222222
6 test33

6. 文件大小写替换

1
2
# 将小写替换为大写
echo abdcABCD |tr a-z A-Z

7. 合并文件

paste 用来按行合并文件,可以做到合并多个文件时,相同行数组合到一起输出,可以用来合并文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
afile:
aaa
111

bfile:
bbb
222

cfile:
ccc
333

paste afile bfile cfile

#输出:
aaa bbb ccc
111 222 333


# 使用 -s 参数可以将每个文件内容组成一行
paste -s afile bfile cfile

#输出:
aaa 111
bbb 222
ccc 333