CentOS——Linux 搜索命令

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 {} \;

使用通配符进行模糊查询:

* 匹配任意内容  

?匹配任意一个字符 

[]匹配任意一个中括号的字符

  1. atime 文件访问时间
  2. ctime 改变文件属性
  3. 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值