《Linux系统中find 指令:全面的文件查找与处理指南》
《Linux 系统中 find 指令:全面的文件查找与处理指南》
导读:在 Linux 系统的操作与管理中,高效地查找文件是一项必备技能。与我们熟悉的 Windows 系统中图形化搜索方式不同,Linux主要借助 find 指令来实现文件查找。本文将深入剖析 find指令的各种用法,从普通查询到按大小、时间、用户等多维度精准查找,还包括对查找结果的处理操作。无论是 Linux新手想要快速上手,还是有一定经验的使用者希望进一步提升文件管理效率,都能从本文中获取有价值的知识与技巧。
2.16 find文件查找代码语言:javascript代码运行次数:0运行复制## 文件查找,我们在windows用的比较多,系统自带的搜索方式、第三方搜索工具everything等。
# linux上没有图形化界面,就要借助find指令来查了。2.16.1 普通查询代码语言:javascript代码运行次数:0运行复制# 普通查询
find /etc -maxdepth 1 -type f -name "pa*"
命令 目录... 查找深度 类型 文件名称包含
# -type文件类型:f表示文件,不指定类型的话,文件和目录都会查找
# -maxdepth查找深度:目录层级的意思,不指定的话,就按照最大深度来查找
# "pa*": *表示匹配任意pa开头的内容,*号还可以写在开头2.16.2 按照大小查找代码语言:javascript代码运行次数:0运行复制## 按照文件大小查找(单位kMG,k要小写,MG要大写,不带单位就按照b单位来查找)
1.查找大于100M的文件
find / -type f -size +100M
[root@localhost tmp]# find / -type f -size +100M
/proc/kcore
find: ‘/proc/1945/task/1945/fdinfo/6’: 没有那个文件或目录
# proc是进程目录,有些进程运行起来之后能看到文件信息,程序运行结束之后,进程文件也消失了,所以看到proc的报错很正常,并且proc的权限很高,不是一般人可以访问的,所以也经常会报权限不够等错误信息,所以以后看到proc的报错直接忽略即可。
find: ‘/proc/1945/fdinfo/5’:
## 没有那个文件或目录/sys/devices/pci000000/0000:00:0f.0/resource1_wc/sys:/devices/pci0000:00/0000:00:0f.0/resource1/
var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite/usr/lib/locale/locale-archive
[root@localhost tmp]# ls -h /usr/lib/locale/locale-archive #大小确实超过了100M
-rw-r--r--. 1 root root 102M 3月 15 20:10 /usr/lib/locale/locale-archive
2.查找小于2k的文件
find /root/nginx-1.20.2 -type f -size -2k
3.查找大于50M同时小于100M的文件
find / -type f -size +50M -and -size -100M2.16.3 忽略大小写代码语言:javascript代码运行次数:0运行复制## 忽略大小写查询
find /etc -maxdepth 1 -iname "pa*" # i是ignore的简写,忽略的意思2.16.4 根据修改时间查找文件代码语言:javascript代码运行次数:0运行复制## 根据修改时间查找文件
[root@localhost ~]# stat 1.txt
文件:"1.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:801h/2049d Inode:67108933 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-03-23 09:04:35.339235371 +0800 #Access time
最近更改:2023-03-23 09:04:35.339235371 +0800 #Modify time
最近改动:2023-03-23 09:04:35.339235371 +0800 #Change time
创建时间:-
## 时间参数:atime mtime ctime amin mmin cmin #(time是按照天来查找,min是按分钟查找)
# 时间单位为天
find /opt -type f -mtime -1 #-1代表一天以内,+1一天以前
# 时间单位为分钟
[root@localhost ~]# find /root -type f -mmin -20
/root/.bash_history
/root/ReadMe.txt
/root/.lesshst
# 查找1天之前,10天之内,修改过的文件
[root@localhost ~]# find /etc/ -type f -mtime +1 -and -mtime -102.16.5 取反:!代码语言:javascript代码运行次数:0运行复制## 取反: !
[root@localhost ~]# find /root -type f -name "*.txt" # 找名称以.txt结尾的文件
/root/1.txt
/root/学习前准备.txt
[root@localhost ~]# find /root -type f ! -name "*.txt" # 找名称中不是.txt结尾的文件
/root/.bash_logout
/root/.bash_profile
[root@localhost ~]# mkdir jaden
[root@localhost ~]# mkdir wulaoban
[root@localhost ~]# find /root -type f # 找文件
/root/.bash_logout
/root/.bash_profile
[root@localhost ~]# find /root ! -type f # 找文件夹
/root/jaden
/root/wulaoban2.16.6 根据用户来查找文件代码语言:javascript代码运行次数:0运行复制## 根据用户来查找文件
[root@localhost ~]# useradd jaden
[root@localhost ~]# find / -user jaden # 查找属于jaden用户的所有目录和文件
/var/spool/mail/jaden
/home/jaden
/home/jaden/.bash_logout
/home/jaden/.bash_profile
/home/jaden/.bashrc
## 根据用户组来查
[root@localhost ~]# find / -group jaden2.16.7 对找出的文件进行处理代码语言:javascript代码运行次数:0运行复制## 对找出的文件进行处理
# 格式:正常的find语句+操作exec
# 比如我们查找到了一些病毒文件,想直接删除
find /tmp -type f -size +10K -exec rm rf {} \;
# {}表示我们找到的那些文件,\;是这样的:正常exec语句最后要分号结尾,但是分号在linux中有特殊的意义
## 比如一次性执行两个指令可以 ls -lh;id,这样执行,所以要对;进行转义,意思是不要将;作为shell指令的分隔
## \就是转义符号。例子:
[root@localhost tmp]# find /tmp -name "vm*" -exec rm -rf {} \;
find: ‘/tmp/vmware-root_560-2957190359’: 没有那个文件或目录
find: ‘/tmp/vmware-root_555-4282367637’: 没有那个文件或目录
find: ‘/tmp/vmware-root_631-4021718894’: 没有那个文件或目录
[root@localhost tmp]# ls
ks-script-ed2ODG
nginx_jaden.tar.gz
systemd-private-d38b668730bf4589896221daead5dbea-chronyd.service-be3NkFyum.log
# 下面的例子就不演示了。
find /root -type f -mmin -30 ! -name ".*" -exec rm {} \;
find /root -maxdepth 1 -type d -name "Apa*" -mmin -30 -exec cp -a {} /tmp
\; # 复制到tmp目录中 希望这篇文章能够为你在探索 Linux系统的道路上提供有力的帮助,让你在操作 Linux 系统时更加得心应手。 我是旺仔SeC,是一名热衷于系统技术的博主,对 Linux系统有着深入的研究和丰富的实践经验。我致力于分享各种系统相关的知识和技巧,帮助大家解决在使用过程中遇到的各种问题。如果你觉得这篇文章对你有所帮助,欢迎点赞、收藏和分享哦
同时,也希望你能关注我的博客,我会持续为大家带来更多优质的系统技术文章,包括但不限于 Linux> 系统的深入探索、系统优化、故障排除以及各种有趣的实战案例。 如果你在学习和使用 Linux
系统的过程中遇到任何问题,或者对某些内容有疑问,欢迎在评论区留言,我会尽力为大家解答。让我们一起在系统技术的海洋中遨游,不断提升自己的技能水平,共同探索系统世界的奥秘
再次感谢大家的阅读,期待我们下次再见!