linux下常见命令总结——grep和find使用方法

linux下常见命令总结——grep和find使用方法

       作为一名后台开发工程师需要频繁与linux系统“打交道”,掌握一些的Linux命令可以让这个交互过程更加流畅。本篇文章重点介绍grep和find两个查找命令,对工作中查找日志和文件有很大帮助。

grep 命令

grep [OPTIONS] PATTERN [FILE…]

文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文件逐行进行匹配检查,打印匹配的行。

PATTERN:正则表达式主要分为基本正则表达式、扩展正则表达式,grep都支持。

  • 查找文件中字符串

[root@VM_5_28_centos ~]# grep bash passwd 
root:x:0:0:root:/root:/bin/bash
  • 忽略大小写查找某个字符串并显示行号

[root@VM_5_28_centos ~]# cat test.txt 
oewjaiofewfoieawjfioeawjfoi
1
2
AAAA
aa
[root@VM_5_28_centos ~]# grep -n -i aa test.txt 
4:AAAA
5:aa
  • 查找不能被匹配到的数据

[root@VM_5_28_centos ~]# grep -v a test.txt 
1
2
AAAA
  • 查找被匹配到数据的前2行 (A 表示后几行、B表示前几行、C表示前后几行)

[root@VM_5_28_centos ~]# grep -B 2 aa test.txt 
2
AAAA
aa
  • 多条件查找被匹配到的数据(egrep支持多条件查找)

[root@VM_5_28_centos ~]# egrep "1|2" test.txt 
1
2
  • 利用grep进行递归多个文件查找某个字符串

[root@VM_5_28_centos ~]# grep -R aa ./*
Binary file ./go/hello matches
Binary file ./go/pkg/linux_amd64/github.com/dutchcoders/goftp.a matches
./go/test/test.txt:aa
Binary file ./test.mp4 matches
./test.txt:aa

find 命令

find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

[查找起始路径] :制定具体搜索目标起始路径;默认为当前目录。

[查找条件]:指定的查找标准,可以根据文件名,大小,类型,从属关系,时间戳,权限等标准进行;默认为找出指定目录下的所有文件。

[处理动作]:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出。

  • 查找某个文件

[root@VM_5_28_centos ~]# find ./ -name test*  
./test.mp4
-name 区分大小  -iname 不区分大小写 ./ 表示当前路径下

  • 查找空文件

[root@VM_5_28_centos ~/go]# ll
total 1892
-rwxr-xr-x 1 root root 1919238 Aug 16 19:45 hello
-rw-r--r-- 1 root root      70 Aug 16 19:45 hello.go
drwxr-xr-x 3 root root    4096 Aug 16 20:17 pkg
drwxr-xr-x 3 root root    4096 Aug 16 20:17 src
drwxr-xr-x 2 root root    4096 Feb  5 16:54 test
-rw-r--r-- 1 root root       0 Feb  5 16:54 test.txt
[root@VM_5_28_centos ~/go]# find ./ -type f -empty
./test.txt
  • 查找空文件夹

[root@VM_5_28_centos ~/go]# find ./ -type d -empty
./src/github.com/dutchcoders/goftp/.git/objects/info
./src/github.com/dutchcoders/goftp/.git/refs/tags
./src/github.com/dutchcoders/goftp/.git/branches
./test
[root@VM_5_28_centos ~/go]# ls -ltr test
total 0

  • 查找空文件并执行删除

# find ./ -type f -empty -exec rm -f {} \;
# ll
total 1892
-rwxr-xr-x 1 root root 1919238 Aug 16 19:45 hello
-rw-r--r-- 1 root root      70 Aug 16 19:45 hello.go
drwxr-xr-x 3 root root    4096 Aug 16 20:17 pkg
drwxr-xr-x 3 root root    4096 Aug 16 20:17 src
drwxr-xr-x 2 root root    4096 Feb  5 16:54 test

       find是一个实时查找命令,可以根据名字、权限、文件大小实时查找文件、文件夹,支持模糊和递归查找。最后一个参数“处理动作”可以用来对查找到的结果进行处理,例如删除文件、查看文件大小等。

vim 巧应用

vim查看日志一行特别长,一行内显示不下,怎么办?

  • 直接在vi的命令模式中输入:set wrap

  • 利用gk、gj进行上下查看,防止直接跳到下一行不方便查看。

  • 如果想取消,就输入:set nowrap

想要替换文中的某个字符,怎么办?

  • 直接在vim的命令模式中输入:s/原始字符/新字符/g   替换单行内字符

  • 直接在vim的命令模式中输入:%s/原始字符/新字符/g   替换文中所有原始字符

发表评论

电子邮件地址不会被公开。 必填项已用*标注