四、Linux 文件搜索常用命令

一、文件搜索命令 - find

命令名称:find

命令所在路径:/bin/find

执行权限:所有用户

功能描述:文件搜索

语法:find [搜索范围] [匹配条件]

常用参数:

参数名称作用
-name按名称查找
-size

按大小查找(+:大于    -:小于    =:等于)

注:这里需要注意下单位, 单位是数据块,一个数据块的大小为512字节,所以1M=2个数据块

-user按属性查找
-type按类型查找,想知道有哪些文件类型, 可以参考:一、Linux 文件以及目录的讲解
-iname忽略大小写

举例:

# 在 “/root/demo” 目录下有以下文件
[root@TR demo]# ll
total 8
-rw-r--r-- 1 root root    0 Jan  6 19:55 压缩文件.tar.gz
-rwxr-xr-x 1 root root    0 Jan  6 19:55 可执行文件
-rw-r--r-- 1 root root    0 Jan 15 15:26 文件
-rw-r--r-- 1 root root   35 Jan  6 22:34 文件.txt
-rw-r--r-- 1 root root    0 Jan 15 15:25 文件TXT
drwxr-xr-x 2 root root 4096 Jan  6 19:54 文件夹
lrwxrwxrwx 1 root root   14 Jan  6 20:19 链接文件 -> /tmp/demo.soft


# 1. 查询文件名为“文件”的文件,可以看到并没有找到另外几个有“文件”关键字的文件,
# 是一个精确查询。
[root@TR demo]# find /root/demo -name 文件
/root/demo/文件
[root@TR demo]# 

# 2. 如果想模糊匹配, 就需要使用通配符“*”
[root@TR demo]# find /root/demo -name "*文件*"
/root/demo/文件.txt
/root/demo/文件夹
/root/demo/链接文件
/root/demo/文件TXT
/root/demo/文件
/root/demo/压缩文件.tar.gz
/root/demo/可执行文件
[root@TR demo]# 

# 3.如果想查询以“txt”结尾的文件呢,可以看到并没有吧“文件TXT”文件查询出来
# 那是因为没有忽略大小写
[root@TR demo]# find /root/demo -name "*txt"
/root/demo/文件.txt
[root@TR demo]# 

# 4.查询以“txt”结尾的文件(不区分大小写)
[root@TR demo]# find /root/demo -iname "*txt"
/root/demo/文件.txt
/root/demo/文件TXT
[root@TR demo]# 

1、除了上述的查询, find 还可以查询一定时间内, 被修改,访问的文件

参数作用
-amin访问时间(access)
-cmin文件属性被修改(change)
-mmin文件内容被修改(modify)
# 1.查询30分钟内被访问(access)过的文件
[root@TR demo]# find /root/demo -amin -30
/root/demo/文件.txt
[root@TR demo]# 

# 2.查询30分钟内被修改(modify)的文件
[root@TR demo]# find /root/demo -mmin -30
/root/demo
/root/demo/文件.txt
[root@TR demo]# 

# 3.查询30分钟内被修(change)改属性的文件
[root@TR demo]# find /root/demo -cmin -30
/root/demo
/root/demo/文件.txt
[root@TR demo]# 

:如果 将上述的“min” 换成“time”, 那是时间单位就有分钟切换成了 

例如:查询超过七天内被访问过的所有文件

[root@TR demo]# find /root/demo -type f -atime +7

 2、查询一个文件的属性范围 

例1:查询一个文件的大小在 100M到200M之间。

# 1. “-a” 表示 “and”  +:表示大于  -:表示小于
[root@TR demo]# find /root/demo -size +204800 -a -size -409600

例2:查询一个文件的大小 大于100M 或者 小于 200M

# 1. “-o” 表示 “or”  +:表示大于  -:表示小于
[root@TR demo]# find /root/demo -size +204800 -o -size -409600

3、对搜索结果执行操作

这个很有趣, 可以使用 “-exec” 或者“-ok” 来对搜索出来的执行操作

例如:想查看搜索出来的文件的详细信息

[root@TR demo]# find /root/demo -name "*文件" -exec ls -l {} \;
lrwxrwxrwx 1 root root 14 Jan  6 20:19 /root/demo/链接文件 -> /tmp/demo.soft
-rw-r--r-- 1 root root 0 Jan 15 15:26 /root/demo/文件
-rwxr-xr-x 1 root root 0 Jan  6 19:55 /root/demo/可执行文件
[root@TR demo]# 

二、文件搜索命令 - locate

命令名称:locate

命令所在路径:/usr/bin/locate

执行权限:所有用户

功能描述:在文件资料库中搜索文件

语法:locate [文件名]

例如:查询文件名为含有“压缩”关键字的文件

[root@TR demo]# locate "*压缩*"
/root/demo/压缩文件.tar.gz
[root@TR demo]# 

扩展:如果上述命令报“locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory”错, 那么只需要输入“updatedb”命令等待执行完毕即可。

find 和 locate的区别

  1. find是实时查询,对系统性能消耗较高;而locate是查询文件资料库,查询很快, 但是会有查询不出来的情况(文件内容信息还未更新进“mlocate.db”数据库中)。
  2. find 查询文件需要带上路径,而locate 直接输入文件名即可。

三、文件搜索命令 - which

命令名称:which

命令所在路径:/usr/bin/which

执行权限:所有用户

功能描述:搜索命令所在目录以及别名信息

语法:which [命令]

例如:查询 “ls” 命令的所在目录以及别名信息

[root@TR demo]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls
[root@TR demo]# 

四、文件搜索命令 - whereis

命令名称:whereis

命令所在路径:/usr/bin/whereis

执行权限:所有用户

功能描述:搜索命令所在目录以及帮助文档路径

语法:whereis [命令]

例如:查询 “ls” 命令的所在目录以及帮助文档路径

[root@TR demo]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@TR demo]# 

五、文件搜索命令 - grep

命令名称:grep

命令所在路径:/bin/grep

执行权限:所有用户

功能描述:在文件中搜寻字符串匹配的行,并输出

语法:whereis [-iv] [执行字符串] [文件]

参数作用
-i不区分大小写
-v排除指定字符串

例如:查询“文件.txt”中含有“胖太乙”的关键字

[root@TR demo]# cat 文件.txt
姓名:胖太乙
年龄:1000岁
[root@TR demo]# grep "胖太乙" /root/demo/文件.txt
姓名:胖太乙
[root@TR demo]# 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖太乙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值