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