linux find -mtime_Linux 中搜索命令大总结

1、whereis

whereis 是搜索系统命令的命令,也就是说 whereis 不能搜索普通文件,只能搜索系统命令

2、which

which 也是搜索系统命令的命令,和 whereis 命令区别在于,如果这个命令有别名,则还可以找到别名

3、locate

可以按照文件名搜索文件
  • 优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置:/var/lib/mlocate/mlocate.db
  • 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照 权限、大小、修改时间等搜索文件

说明1:

关于执行locate时报错“locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory”的处理

答:
locate是通过生成一个文件和文件夹的索引数据库,当用户在执行loacte命令查找文件时,它会直接在索引数据库里查找,若该数据库太久没更新或不存在,此时执行 updatedb ,更新下数据库即可

说明2:

你在 /tmp 下建一个文件,你用 locate 命令是搜不到的,原因是它在配置文件里面配置了禁止搜索 /tmp 目录下的文件

vim /etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes"    #开启搜索限制,也就是让这个配置文件生效
PRUNEFS="......"  # 在 locate 执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES="......"  # 在 locate 执行搜索时,禁止搜索带这些扩展名的文件
PRUNEPATHES="......"  # 在 locate 执行搜索时,禁止搜索这些系统目录

4、find

① 按照文件名搜索

find 搜索路径 [选项] 搜索内容
选项:
-name:按照文件名搜索
-iname:按照文件名搜索,不区分文件名大小写
-inum:按照 inode 号搜索

对于使用 inode 号搜索,这里说一下:

[hepingfly@hepingfly ~]$ touch abc.txt
[hepingfly@hepingfly ~]$ ll
总用量 0
-rw-rw-r--. 1 hepingfly hepingfly 0 2月  20 23:25 abc.txt
[hepingfly@hepingfly ~]$ ls -i abc.txt   # 使用这个命令可以根据文件名搜出这个文件名对应的 inode 号
131081 abc.txt
[hepingfly@hepingfly ~]$ find /home -inum 131081 
find: “/home/lost+found”: 权限不够
/home/hepingfly/abc.txt

#有了 inode 号,就可以使用 find 命令查找文件的位置了

② 按照文件大小搜索

find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小:按照指定大小搜索文件
"+" 的意思是搜索比指定大小还要大的文件,"-" 的意思是搜索比指定文件还要小的文件

find 命令的单位:

-size n[cwbkMG]
              File uses n units of space.  The following suffixes can be used:

              ‘b’    for  512-byte blocks (this is the default if no suffix is
                     used)  # 这是默认单位,如果单位为 b 或者不写单位,默认按照 512 字节搜索

              ‘c’    for bytes   # 搜索单位是 c ,按照字节搜索

              ‘w’    for two-byte words  # 搜索单位是 w ,按照双字节(中文)搜索

              ‘k’    for Kilobytes (units of 1024 bytes) # 按照 kb 单位搜索,必须是小写 k

              ‘M’    for Megabytes (units of 1048576 bytes)  # 按照 MB 单位搜索,必须是大写 M

              ‘G’    for Gigabytes (units of 1073741824 bytesM  # 按照 GB 单位搜索,必须是大写 G

例子:

# 下面这条命令的意思是在 /home 目录下搜索 5 * 512 字节的文件
[root@hepingfly hepingfly]# find /home/ -size 5   

#下面这条命令的意思是在 /home 目录下搜索大于 10M 的文件
[root@hepingfly hepingfly]# find /home/ -size +10M

③ 按照修改时间搜索

Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件

find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间:按照文件访问时间搜索
-mtime [+|-]时间:按照文件数据修改时间搜索
-ctime [+|-]时间:按照文件状态修改时间搜索

注:time 的单位是 “天”,min 单位是分钟

重点说一下 「+|-」的含义:

  • -5 :代表 5 天内修改的文件
  • 5 :代表前 5 ~ 6 天那一天修改的文件
  • +5:代表 6 天前修改的文件
# 在 /home 目录下搜索 5 天内修改过的文件
[root@hepingfly hepingfly]# find /home -mtime -5
/home
/home/lost+found
/home/hepingfly
/home/hepingfly/.lesshst
/home/hepingfly/abc.txt
/home/hepingfly/.mozilla

④ 按照权限搜索

find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式:查找文件权限刚好等于 "权限模式" 的文件
-perm -权限模式:查找文件权限全部包含 "权限模式" 的文件
-perm +权限模式:查找文件权限全部包含 "权限模式" 的任意一个权限的文件
# 查找 /home 目录下权限是 644 的文件
[root@hepingfly hepingfly]# find /home -perm 644

[root@hepingfly hepingfly]# ll
总用量 0
-rw-rw-r--. 1 hepingfly hepingfly 0 2月  20 23:25 abc.txt      # 权限是 664
-rw-------. 1 hepingfly hepingfly 0 2月  21 00:37 bcd.txt      # 权限是 600

# "+" 表示 600 三组权限只要有一组比 444 三组权限中的一组大,就会搜索出来
[root@hepingfly hepingfly]# find /home -perm +444
/home/hepingfly/bcd.txt
/home/hepingfly/abc.txt

# "-" 表示 600 三组权限都要比 444 三组权限大或者等于,才会搜索出来
[root@hepingfly hepingfly]# find /home -perm +444
/home/hepingfly/abc.txt

⑤ 按照所有者和所属组搜索

find 搜索路径 [选项] 搜索内容
选项:
-uid 用户ID:按照用户 ID 查找所有者是指定 ID 的文件
-gid 组ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名:按照用户名查找所有者是指定用户的文件
-group 组名:按照组名查找所属组是指定用户组的文件
-nouser :查找没有所有者的文件

按照所有者和所属组搜索时,"-nouser" 选项比较常用,主要用于查找垃圾文件。只有一种情况例外,那就是外来文件。比如,光盘和 U盘中的文件如果是由 Windows 复制的,在 Linux 查看就是没有所有者的文件,再比如手工源码包安装的文件,也有可能没有所有者

# 在 /home 目录下搜索用户名是 hepingfly 的文件
[root@hepingfly hepingfly]# find /home -user hepingfly

⑥ 按照文件类型搜索

find 搜索路径 [选项] 搜索内容
选项:
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件

⑦ 逻辑运算符

find 搜索路径 [选项] 搜索内容
选项:
-a:and 逻辑与
-o:or 逻辑或
-not:not 逻辑非

1、逻辑与

find 命令也支持逻辑运算符选项,其中 -a 代表逻辑与运算,也就是 -a 的两个条件都成立,find 搜索的结果才成立

[root@hepingfly 桌面]# find /home/ -size -20M -a -type d

# 上面这条命令的意思就是:在 /home 目录下搜索小于 20M ,并且文件类型是目录

2、逻辑或

-o 代表逻辑或运算,也就是 -o 的两个条件只要其中一个成立,find 命令就可以找到结果

# 在 /home 目录下搜索名称是 abc.txt 的或者名称是 bcd.txt 的
[root@hepingfly hepingfly]# find /home -name abc.txt -o -name bcd.txt 
/home/hepingfly/bcd.txt
/home/hepingfly/abc.txt

3、逻辑非

-not 是逻辑非,也就是取反的意思

# 在 /home/hepingfly 目录下搜索名称不是 abc.txt 的文件
[root@hepingfly hepingfly]# find /home/hepingfly/ -not -name abc.txt

#或者上面的命令你这么写也可以:
find /home/hepingfly/ ! -name abc.txt       # 注意  ! 左右两侧一定要有空格

⑧ 其他选项

1、-exec 选项

find 搜索路径 [选项] 搜索内容 -exec 命令2 {} ; 注:
只要你写了 exec 命令,这个 ;就是必须要写的,这是格式

上面命令的作用就是把 find 命令查出来的结果放到大括号里面,交给由 -exec 调用的命令2 来处理。"{}" 就代表 find 命令的查找结果

# 这条命令的意思就是,把 /home 目录下小于 20M 的文件查出来的结果放到大括号里,然后交给 ls -l 命令去执行
find /home -size -20M -exec ls -l {} ;

2、-ok 选项

-ok 选项和 -exec 选项的作用基本一致,区别在于:-exec 的命令2 会直接处理,而不询问。-ok 的命令2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行

5、grep

grep 的作用是在文件中提取和匹配符合条件的字符串行 grep [选项] "搜索内容" 文件名
选项:
-i:忽略大小写
-n:输出行号
-v:反向查找(找不包含搜索内容的)
--color=auto:搜出的关键字用颜色显示
# 这条命令会把 abc.txt 文件中有关 heping 的行搜索出来
[root@hepingfly hepingfly]# grep --color=auto heping abc.txt 
hepingfly
heping hello

下面说下 find 命令和 grep 命令的区别:

1)、find 命令
find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配。搜索时文件名是完全匹配的。
2)、grep 命令
grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配。搜索时字符串时包含匹配的。

通配符和正则表达式的区别:

通配符:用于匹配文件名,完全匹配

7、管道符

命令格式: 命令1|命令2
命令1 的输出作为命令2 的输入
# 将 ll 命令的结果,作为 more 命令的输入
[root@hepingfly 桌面]# ll /etc/ |more

你会发现管道符的作用和前面说的 find 中 exec 命令很像,都是把一个命令的输出作为另一个命令的输入。(可以看前面 find 命令)

其实可以说管道符和 exec 命令基本作用一致,可以为什么基本作用一样还要弄两个命令呢?
我们把含有管道符的操作叫做文本流操作,但是 find 命令不支持文本流操作,但是管道符又很有用,所以在 find 命令中使用 exec 选项来模拟管道符
# 管道符的操作时文本流操作,不论前一个命令的结果是什么,最终都是以字符串形式呈现,grep 是搜索符合条件的字符串(相当于我把前一个命令的结果保存在一个临时文件中,然后后一个命令去操作它)
[root@hepingfly 桌面]# ll /etc/ | grep yum

8、netstat

netstat 在 CentOS7 中,需要安装 net-snmp.x86_64net-tools.x86_64 两个包才有此命令。7.5 系统中已经自动安装

netstat [选项]
选项:
-a:列出所有网络状态,包括 Socket 程序
-c 秒数:指定每隔几秒刷新一次网络状态
-n:使用 IP 地址和端口号显示,不使用域名和服务名
-p:显示 PID 和程序名
-t:显示使用 TCP 协议端口的连接状况
-u:显示使用 UDP 协议端口的连接状况
-l:仅显示监听状态的连接
-r:显示路由表
# 这条命令的意思就是查询系统中所有开启的端口
[root@hepingfly 桌面]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:38238               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
[root@hepingfly 桌面]# netstat -anp |more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:38238               0.0.0.0:*                   LISTEN      2139/rpc.statd             
tcp        0      0 192.168.31.240:22           192.168.31.90:50135         ESTABLISHED 7199/sshd 


# ESTABLISHED 这个状态表示有人正在远程登录我的服务器,可以通过  Foreign Address 来看是谁在登录

# 那么想一下我可不可以判断,当前系统到底有多少在正在访问?
[root@hepingfly 桌面]# netstat -anp | grep ESTABLISHED | wc -l
2

# 通过上面这个命令我就可以知道具体的网络连接数量
[root@hepingfly 桌面]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.31.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
0.0.0.0         192.168.31.1    0.0.0.0         UG        0 0          0 eth0
# 最后一个就是网关,可以使用 netstat -rn 去查看网关
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值