Linux命令之find、grep、file、which和whereis

find查找文本

  • 注意两点:在哪些目录里查找,查找的内容是什么

  • 格式:find 目录名 选项 查找条件

  • 举例:

guest-kpkiwy@book-virtual-machine:~/xiaoma$ ls
a.c  a.o  b.c  b.o  c.c  clean  c.o  demo1.c  exam2.c  hello  include  Makefile  Makefile2  Makefile3  test  test.txt  -v  xiaoma2
guest-kpkiwy@book-virtual-machine:~/xiaoma$ pwd
/tmp/guest-kpkiwy/xiaoma
guest-kpkiwy@book-virtual-machine:~/xiaoma$ cd
guest-kpkiwy@book-virtual-machine:~$ find /tmp/guest-kpkiwy/xiaoma/ -name "a.c"
/tmp/guest-kpkiwy/xiaoma/a.c
  • /tmp/guest-kpkiwy/xiaoma/指明了查找的路径
  • -namne表明以名字来查找文件
  • "a.c"就指明查找名为a.c的文件
guest-kpkiwy@book-virtual-machine:~$ find /tmp/guest-kpkiwy/xiaoma/ -name "**.c"
/tmp/guest-kpkiwy/xiaoma/exam2.c
/tmp/guest-kpkiwy/xiaoma/c.c
/tmp/guest-kpkiwy/xiaoma/b.c
/tmp/guest-kpkiwy/xiaoma/a.c
/tmp/guest-kpkiwy/xiaoma/demo1.c
  • 查找指定目录下面所有以.c结尾的文件,其中*是通配符
guest-kpkiwy@book-virtual-machine:~$ find /tmp/guest-kpkiwy/xiaoma/ -name "xiaoma2"
/tmp/guest-kpkiwy/xiaoma/xiaoma2
  • 查找指定目录下面是否存在xiaoma2这个目录,xiaoma2是目录名
  • 注意
    a)如果没有指定查找目录,则为当前目录
    find . -name “* .txt”
    其中.代表当前路径
    find -name “*.txt”
    都是一样的功能
    b)find还有一些高级的用法,如查找最近几天(几个小时)之内(之前)有变动的文件
    find /home -mtime -2 查找/home目录下两天内有变动的文件

grep查找字符串

  • 目的:使用grep命令来查找文件中符合条件的字符串
  • 格式:grep [选项] [查找模式] [文件名]
  • 查找字符串时希望显示如下内容:
    1)所在的文件名—grep查找时默认已经显示目标文件名
    2)所在的行号----使用-n选项
  • grep -rn “字符串” 文件名
    r(recursive):递归查找
    n(number):显示目标位置的行号
    字符串:要查找的字符串
    文件名:要查找的目标文件,如果是*则表示当前目录下的所有文件和目录
  • 举例:
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ cat test.txt 
abc
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ cd xiaoma3/
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2/xiaoma3$ cat test.txt 
abc
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2/xiaoma3$ cd ..
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ grep -rn "abc" *
test.txt:1:abc
xiaoma3/test.txt:1:abc
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ 
  • grep -n “abc” test.txt 在test.txt中查找字符串abc

    grep -rn “abc” * 在当前目录递归查找字符串abc

  • 注意:可以加入-w全字匹配 grep -rnw “abc” *

  • 举例

guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ cat test.txt 
abc
aebc
abcd
abec

guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ vi test.txt 
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ cat test.txt 
abc
aebc
abcd
abec
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ cd xiaoma3/
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2/xiaoma3$ cat test.txt 
abc
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2/xiaoma3$ cd ..
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ grep -rn "abc" *
test.txt:1:abc
test.txt:3:abcd
xiaoma3/test.txt:1:abc
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ grep -rnw "abc" *
test.txt:1:abc
xiaoma3/test.txt:1:abc
guest-kpkiwy@book-virtual-machine:~/xiaoma/xiaoma2$ 

file查看文件类型

  • 目的:识别文件类型
    格式:file 文件名
    linux下一切皆文件
  • 举例:
    file ~/.bashrc 为ASCLL编码的text类型
    file ~/.vimrc 为UTF-8 Unicode编码的text类型
    file ~/Pictures/* 如图形文件JPEG/PNG/BMP格式
    file ~/xiaoma4/ 为directory表明这是个目录
    file /bin/pwd 出现ELF 64-bit LSB executable,即为ELF格式的可执行文件
    file /dev/* 出现character special(字符设备文件)、block special(块设 备文件)

which和whereis查找命令所在位置

  • 目的:查找命令或应用程序的所在位置
    格式:which 名命名/应用程序名

    在中断执行pwd实际上是去执行了/bin/pwd
    举例:
    which pwd 定位到/bin/pwd
    which gcc 定位到/usr/bin/gcc
    whereis pwd 查找到可执行程序的位置/bin/pwd和手册页的位置/usr/share/man/man1/pwd.1.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值