1. locate 命令
命令格式:locate 文件名
在后台数据库中按文件名搜索,搜索速度快。
locate 命令搜索的后台数据库: /var/lib/mlocate
更新数据库命令:updatedb
[root@localhost ~]# ll java书/
total 0
-rw-r--r--. 1 root root 0 Jun 3 18:10 java编程思想
-rw-r--r--. 1 root root 0 Jun 3 18:10 java编程艺术
-rw-r--r--. 1 root root 0 Jun 3 18:10 多线程
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# ll java书/
total 0
-rw-r--r--. 1 root root 0 Jun 3 18:10 java编程思想
-rw-r--r--. 1 root root 0 Jun 3 18:10 java编程艺术
-rw-r--r--. 1 root root 0 Jun 3 18:10 多线程
[root@localhost ~]# locate java编程
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# updatedb
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# locate java编程
/root/java书/java编程思想
/root/java书/java编程艺术
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# locate java书
/root/java书
/root/java书/java编程思想
/root/java书/java编程艺术
/root/java书/多线程
[root@localhost ~]#
locate优点是 搜索速度快 ,缺点是只能按文件名搜索;
2. find 命令
命令格式: find pathname -options [-print -exec -ok...]
find命令用来在指定目录下查找文件。
pathname :表示find命令所查找的文件或目录的路径。例如:/home/tools/tongyan
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的 shell 命令。相应命令的形式为 'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
搜索条件:
- -name filename #查找名为filename的文件,iname 会忽略大小写
- -user username #按文件属主来查找
- -ipath p, -path p #路径名称符合 p 的文件,ipath 会忽略大小写
- -group groupname #按组来查找
- -atime n #在过去n天内被读取过的文件
- -amin n # 在过去 n 分钟内被读取过
- -ctime -n +n #在过去n天内被修改过的文件
- -newer f1 !f2 #查更改时间比f1新但比f2旧的文件
- -size n[c] #查长度为n块[或n字节]的文件
- -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
- 文件类型包括:
- d: 目录
- c: 字型装置文件
- b: 区块装置文件
- p: 具名贮列
- f: 一般文件
- l: 符号连结
- s: socket
- 文件类型包括:
-
-a and 逻辑与 ,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
使用通配符进行模糊查询:
* 匹配任意内容
?匹配任意一个字符
[]匹配任意一个中括号的字符
- atime 文件访问时间
- ctime 改变文件属性
- mtime 修改文件内容
【注】
-10 10天内修改的文件
10 10天当前修改的文件
+10 10天前修改的文件
[root@localhost java书]#
[root@localhost java书]# ll
total 4
drwxr-xr-x. 2 root root 6 Jun 3 19:34 java练习
-rw-r--r--. 1 root root 12 Jun 3 19:44 java编程思想.pdf
-rw-r--r--. 1 root root 0 Jun 3 18:10 java编程艺术.txt
-rw-r--r--. 1 root root 0 Jun 3 18:10 多线程
[root@localhost java书]#
[root@localhost java书]# find -name *.pdf
./java编程思想.pdf
[root@localhost java书]#
[root@localhost java书]# find -name "java*"
./java编程艺术.txt
./java练习
./java编程思想.pdf
[root@localhost java书]#
[root@localhost java书]# find . -ctime -3
.
./多线程
./java编程艺术.txt
./java练习
./java编程思想.pdf
[root@localhost java书]#
[root@localhost java书]#
[root@localhost java书]#
[root@localhost java书]# find . -size -2k
.
./多线程
./java编程艺术.txt
./java练习
./java编程思想.pdf
[root@localhost java书]#
[root@localhost java书]# ls -i
16793411 java练习 2555682 java编程思想.pdf 2555673 java编程艺术.txt 2555674 多线程
[root@localhost java书]#
[root@localhost java书]# find . -inum 2555673
./java编程艺术.txt
3. grep 命令
grep [选项] 字符串 文件名
在文件当中匹配符合条件的字符串
选项:
- -i 忽略大小写
- -v 排除指定字符串
[root@localhost java书]# cat java编程思想.pdf
hello world
how are you
纵有红颜,百生千劫
[root@localhost java书]# grep "hello" java编程思想.pdf
hello world
[root@localhost java书]# grep "Hello" java编程思想.pdf
[root@localhost java书]#
[root@localhost java书]# grep -i "Hello" java编程思想.pdf
hello world
[root@localhost java书]# grep -v "Hello" java编程思想.pdf
hello world
how are you
纵有红颜,百生千劫
[root@localhost java书]#
4. whereis与which 命令
whereis 命令名
#搜索命令所在路径及帮助文档所在位置
选项:
-b :只查找可执行文件位置
-m:只查找帮助文件
which 文件名
搜索命令所在路径及别名
[root@localhost java书]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@localhost java书]#
[root@localhost java书]#
[root@localhost java书]# whereis -b ls
ls: /usr/bin/ls
[root@localhost java书]# whereis -m ls
ls: /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@localhost java书]#
[root@localhost java书]#
[root@localhost java书]# which ls
alias ls='ls --color=auto'
/usr/bin/ls