查找工具


find命令

用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名

特性

  • 会自动递归查询子目录

语法

1
find path -option [ -print ] [ -exec -ok command ] {} \;

选项

  • name filename, -iname filename  : 文件名称符合 name 的文件。iname 会忽略大小写

#查当前目录下**.c后缀**文件。

Linux中的.c .py只是后缀,和win的格式不同。如文件:test.sh和test都可以是shell脚本

1
find . -name "*.c"
  • -type c : 文件类型是 c 的文件。

c类型:

  1. d: 目录
  2. c: 字型装置文件
  3. b: 区块装置文件
  4. p: 具名贮列
  5. f: 一般文件  touch/vim/cat产出的文件默认为一般文件
  6. l: 符号连结
  7. s: socket

更多选项 [icon-url href=“https://www.runoob.com/linux/linux-comm-find.html” target="_blank"]菜鸟[/icon-url]

grep命令

功能:

  • 在文章内查找 pattern

g global

re regular expression 正则表达式

p print

用法:

  • grep 【something】 【filename】
1
2
3
4
5
6
7
8
9
#File
#time name age
#12 lthero 40
#6 lili 35
#6 wawa 20
#11 jaja 33
grep lili file
#输出
6 lili 35

grep 重要的选项

  • -c count 会显示找出 目标内容出现次数
  • -i ignore 忽略大小写
  • -n 会显示目标内容所在 行号

1
2
3
4
grep -in pizza food-costs
1:pizza $2
2:Pizza $3
4:PIZZA $5

  • -l 接收多个文件参数 可以判断目标内容在哪个文件中出现

1
2
grep -l hello fi1 fi2 fi3
fi1

  • -L 同小写的l,但判断哪些文件没有出现pattern

grep查找 符合的规则是包含目标内容,但如果 精确查找 用-w

  • -w 精确查找 如:查now 会忽略know
  • -v reverse 反选 只选出不包含目标的段落
  • -x 只查找 pattern 独占一行的段落
  • -r recursive 查找目前目录 所有子文件 全局查找
1
2
如在wordpress中包含查Please tyep your comment text的文件
grep -ir "Please tyep your comment text" www/wordpress

look命令

功能

  • 只能查找全部的以 pattern开头的行

用法

  • look 【选项】【filename】

特性

  • 查找的内容要是按字母表****排序好的文件
  • 不能从标准输入接收数据
  • 不能用pipeline 接收数据
  • look 查找的方法是二分查找

选项

  • -f fold 表示不区分大小写

sort命令

用法

  • sort [-dfbru] [-o outfile] infile

选项

  • -o 保存到文件中 sort file_in > outfile 可以实现保存的功能,但不能保存到同文件中
  • -o可以实现保存到同名文件
1
sort -o names names

sort 支持同时排序多个文件并保存到一个文件中

1
2
sort oldfile file newfile > resfile
sort -o newfile oldfile file newfile #可以保存到同名文件中
  • -d 只排文字 数字 和空格
  • -f fold 不会区分大小写
  • -n numeric 会将不按字符串排序 而按照数字大小排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#File
11
2
1
20
10
sort File
1
10
11
2
20
sort -n File
1
2
10
11
20
  • -r reverse 将内容倒序(按字符串)
  • -rn 就按数大小 而且倒序排
  • -u unique 排序时 将重复内容只保留一个
1
2
3
4
5
6
7
8
9
10
11
12
#File
1
1
5
4
4
4
sort -u File
1
2
4
5
  • -c check 检测文件是否排序过,不会自动排序只作检测

如果有序的 将无输出(no news is good news)

如果无序的 会提示开始混乱的位置

1
2
sort: test:2: disorder: 1
2:第二行 1:内容是1

uniq命令

功能

  • 消除重复的,对重复行进行计数,输入的文件必须已经排序好的

用法

  • uniq [-cdu] [infile [outfile]]

选项

  • -d 只保留重复的行
  • -u 只保留不重复的行
  • -c 输出结果前加序号

1
2
sort -u file1 file2
sort file1 file2 | uniq 效果一样

join命令

功能

将两个有序文件合并 按值合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#file1
111 hug Man
222 Ste Pen
333 Mick Stu
444 Mel Col
#file2
111 10011
222 20022
333 30033
444 40044
join file1 file2
#输出
111 Hug Mun 10011
222 Ste Pen 20022
333 Mick Stu 30033
444 Mel Col 40044

如果file1中有数据不在file2中,则**join不会匹配,**同理file2不在file1的也不会匹配

显示时,只会显示匹配上的

1
2
file1还有 555 lthero
file2 有 666 66666

1
join file1 file2

但结果和上面一样

如果要看全部内容

1
2
3
4
5
6
7
8
用-a 选项
join -a1 file1 file2 会显示file1全部内容,并将匹配的内容也显示
join -a2 file1 file2 显示file2全部内容 和匹配的内容
join -a1 -a2就是和默认显示方式一样,只显示匹配内容 不能用-a1 -a2 或 -a12
-v reverse 反转
join -v1 file1 file2 显示 file1中 没有匹配的
join -v1 -v2 file1 file2 全部没有匹配的
-i 不会区分大小写