随笔6-Linux探索(常用命令之文件查找)

一, find 搜索

find 命令再工作中十分重要,但是这个鬼比较消耗磁盘

1.1 按照大小搜索
find -size
1.2 按照时间搜索
find -atime # 按照文件访问时间搜索
find -mtime #按照文件数据修改时间搜索
find -ctime # 按照文件状态修改时间搜索
# 查找五天前修改的文件  
[root@localhost ~]# find /data/happy-linux/ -type f -mtime +5
/data/happy-linux/apache-tomcat-8.0.4/log/catalina_log_2020-04-25.log
/data/happy-linux/apache-tomcat-8.0.4/log/catalina_log_2020-04-27.log
/data/happy-linux/apache-tomcat-8.0.4/log/catalina_log_2020-04-26.log
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 


# 查找五天内修改的log文件
[root@localhost data]# find ./ -type f -name "*.log" -mtime -5                    
# 查找五天前修改的log文件
[root@localhost data]# find ./ -type f -name "*.log" -mtime +5
./wrapper.log
./audit.log
[root@localhost data]# 
1.3 按照权限搜索
find -perm [权限模式]
find -perm +[权限模式]
find -perm -[权限模式]
1.4 按照所有者和所属组搜索(不怎么用)
find  [目录] -uid [uid]          # 按照用户ID查找所属组是指定用户ID的文件
find  [目录] -gid [gid]          # 按照用户组ID查找所属组是指定组ID的文件
find  [目录] -user [user name]   # 按照用户名查找所属用户是指定用户的文件
find  [目录] -group [group name] # 按照组名查找所属组是指定用户组的文件
find  [目录] -nouser(常用)       # 查找没有所有者的文件
1.5 按照文件类型搜索
find  [目录] -type d  #查找目录
find  [目录] -type f  #查找普通文件
find  [目录] -type l  #查找软连接文件
1.6 按照名称搜索
find  [目录] -name [name]
1.7 逻辑运算符
find  [目录] [condition 1] -a [condition 2]  #逻辑与
find  [目录] [condition 1] -o [condition 2]  # 逻辑或
find  [目录] [condition 1] -not [condition 2]  #逻辑非
find  [目录]  ! [condition 1]  # 取反 == -not (左右两边都有空格)
1.8 其他选项
  • exec选项
find [目录] [选项]  搜索内容 -exec 命令2 {} \;

将find 命令的结果交给 "-exec" 调用的命令2来处理 "{}" 就是代表find命令的查找结果
[root@localhost happy-linux]# find / -type f -name "test.text" -exec rm -rf {} \; 
  • ok选项
1.9 实用组合命令
find /home -name a.txt
find /hom -user hello
find / -size +nM
find / -size -nM
find / -size n
find / -name *.txt
1.10 利用xargs结合删除命令使用
[root@localhost happy-linux]# mkdir temp1 temp2 temp3 temp4
[root@localhost happy-linux]# touch temp1/test.text
[root@localhost happy-linux]# touch temp2/test.text
[root@localhost happy-linux]# touch temp3/test.text
[root@localhost happy-linux]# touch temp4/test.text

统计查看

[root@localhost happy-linux]# find ./ -type f -name "test.text"
./temp4/test.text
./temp3/test.text
./temp1/test.text
./temp2/test.text



删除

[root@localhost happy-linux]# find ./ -type f -name "test.text"|xargs rm -rf
[root@localhost happy-linux]# 
[root@localhost happy-linux]# 

统计查看


[root@localhost happy-linux]# 
[root@localhost happy-linux]# 
[root@localhost happy-linux]# find ./ -type f -name "test.text"
[root@localhost happy-linux]# 
[root@localhost happy-linux]# 
[root@localhost happy-linux]# 
[root@localhost happy-linux]#
[root@localhost ~]# for i in `find /data/ -type f -name "happy.log"`; do echo "you are welcome" >$i; done                
[root@localhost ~]# find /data/ -type f -name "happy.log" | xargs cat
you are welcome
you are welcome
you are welcome
you are welcome
you are welcome
[root@localhost ~]#

二. locate 搜索

locate 是基于数据库的搜索

优点: 按照数据库搜索,搜索速度快,消耗资源小. 数据库位置 /var/lib/mlocate/mlocate.db

缺点: 只能按照文件名来搜索文件,而不能执行更复杂的搜索

  • 第一次运行必须先 updatedb 命令创建locate数据库
  • locate a.txt
  • 配置文件位于 : /etc/updatedb.conf

三. whereis 搜索

  • whereis 不能搜索普通文件,只能搜索系统系统命令.
  • 查找二进制命令的同时, 查找帮助文档的位置

四. which 搜索

  • which 也是搜索系统命令的命令.
  • which在查找二进制命令的同时,如果这个命令有别名,则还可以找到别名命令

五. 查找打开的文件(lsof)

lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

安装

yum install lsof

选项

-a:列出打开文件存在的进程
-c<进程名>:列出指定进程所打开的文件
-g:列出GID号进程详情
-d<文件号>:列出占用该文件号的进程
+d<目录>:列出目录下被打开的文件
+D<目录>:递归列出目录下被打开的文件
-n<目录>:列出使用NFS的文件
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件
-u:列出UID号进程详情
-h:显示帮助信息
-v:显示版本信息

示例

[root@localhost ~]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1081 root    3u  IPv4  20547      0t0  TCP *:ssh (LISTEN)
sshd    1081 root    4u  IPv6  20556      0t0  TCP *:ssh (LISTEN)
sshd    2050 root    3u  IPv4  30730      0t0  TCP localhost.localdomain:ssh->192.168.207.1:49440 (ESTABLISHED)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值