首页 > 系统相关 >每天学一个 Linux 命令(20):find

每天学一个 Linux 命令(20):find

时间:2024-08-01 11:29:52浏览次数:14  
标签:文件 20 centos7 查找 Linux root find mingongge

命令简介

find 命令在文件系统中搜索文件和目录。

find 命令用来在指定目录下查找文件,在参数之前的任何字符串都会当作是目录名。使用 find 命令时,如何不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部显示出来。

find 还是一个功能非常强大的用于处理 Linux 系统上文件的工具,它可以单独查找文件,也可以与其他程序(命令)结合对需要处理的文件进行操作。

补充说明

Linux文件类型:

f #普通文件
l #符号连接
d #目录
c #字符设备
b #块设备
s #套接字
p #Fifo

UNIX/Linux文件系统中的每个文件都有三种时间戳:

  • 访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。
  • 修改时间 (-mtime/天,-mmin/分钟):文件最后一次被修改的时间。
  • 变化时间 (-ctime/天,-cmin/分钟):文件元数据(例如权限等)

语法格式

find [目录路径] [选项] [文件名]
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

选项说明

-amin<分钟>:#查找在指定时间内被存取过的文件或目录,单位分钟
-mmin<分钟>:#查找在指定时间内被更改过的文件或目录,单位分钟
-mtime<24小时数>:#查找在指定时间内被更改过的文件或目录,单位24小时
-atime<24小时数>:#查找在指定时间被写入过的文件或目录,单位24小时
-cmin<分钟>:#查找在指定时间之内被更改过的文件或目录
-ctime<24小时数>:#查找在指定时间之时被更改的文件或目录,单位以24小时计算
-daystart:#从今天开始计算时间
-depth:#从指定目录下最深层的子目录开始查找
-exec<执行指令>:#如果find命令返回值为True,就执行该指令
-false:#将find命令返回值都设为False
-fstype<文件系统类型>:#只查找此指定文件系统类型下的文件或目录
-gid<群组识别码>:#查找匹配此群组识别码的文件或目录
-group<群组名称>:#查找匹配此群组名称的文件或目录
-help或——help:#帮助信息
-links<连接数目>:#查找匹配指定的硬连接数目的文件或目录
-maxdepth<目录层级>:#设置查找的最大目录层级
-mindepth<目录层级>:#设置查找的最小目录层级
-name<范本样式>:#指定字符串作为寻找文件或目录的范本
-path<范本样式>:#指定字符串作为寻找目录的范本样式
-perm<权限数值>:#查找符合指定的权限数值的文件或目录
-size<文件大小>:#查找符合指定的文件大小的文件
-true: #将find命令返回值都设为True
-type<文件类型>:#只查找匹配指定的文件类型的文件
-uid<用户识别码>:#只查找匹配指定的用户识别码的文件或目录
-user<拥有者名称>:#只查找匹配指定的拥有者名称的文件或目录
-version:#显示版本信息

应用举例

当前目录搜索所有文件,文件内容包含 “192.168.1.111” 的内容

find . -type f -name "*" | xargs grep "192.168.1.111"

根据文件或者正则表达式进行匹配,查找需要的文件或目录

#列出当前目录及子目录下所有文件和文件夹
[root@centos7 ~]# find .
 
#在/mingongge目录下查找包含mingongge开头的文件名
[root@centos7 ~]# find /mingongge -name "mingongge*.log"
/mingongge/mingongge_errors.log
/mingongge/mingongge.log
/mingongge/mingongge_test.log
 
#当前目录及子目录下查找所有以.txt和.log结尾的文件
[root@centos7 ~]# find . \( -name "*.txt" -o -name "*.log" \) 
或
[root@centos7 ~]# find . -name "*.txt" -o -name "*.log"
 
#匹配文件路径或者文件
[root@centos7 ~]# find /usr/ -path "*txt*"
 
#基于正则表达式匹配文件路径
[root@centos7 ~]# find . -regex ".*\(\.txt\|\.log\)$"
 
#忽略大小写
[root@centos7 ~]# find . -iregex ".*\(\.txt\|\.log\)$"

find 否定参数用法举例

#找出/mingongge下不是以.log结尾的文件
[root@centos7 ~]# find /mingongge ! -name "*.log"

基于目录深度搜索

#向下最大深度限制为5
[root@centos7 ~]# find . -maxdepth 5 -type f
 
#搜索出深度距离当前目录至少3个子目录的所有文件
[root@centos7 ~]# find . -mindepth 3 -type f

根据文件时间戳进行查找

#查找最近10天内被访问过的所有文件
[root@centos7 ~]# find . -type f -atime -10
 
#查找超过10天内被访问过的所有文件
[root@centos7 ~]# find . -type f -atime +10
 
#查找访问时间超过20分钟的所有文件
[root@centos7 ~]# find . -type f -amin +20
 
#找出比mingongge修改时间更长的所有文件
[root@centos7 ~]# find . -type f -newer mingongge

删除查找到的匹配文件

#删除当前目录下所有.txt文件
[root@centos7 ~]# find . -type f -name "*.txt" -delete

根据文件权限/所有权进行匹配:

#当前目录下找出权限为777的文件
[root@centos7 ~]# find . -type f -perm 777#找出当前目录下所有者是mingongge的所有文件
[root@centos7 ~]# find . -type f -user mingongge
 
#找出当前目录下用户组为mingongge的所有文件
[root@centos7 ~]# find . -type f -group mingongge #找出当前目录下权限不是644的.log文件
[root@centos7 ~]# find . -type f -name "*.log" ! -perm 644

find 和 -exec 选项结合使用

#找出当前目录下所有者为root的文件,并把所有者更改为mingongge这个用户
[root@centos7 ~]# find .-type f -user root -exec chown mingongge {} \;
 
#找出当前用户家目录下所有的.log文件并执行删除动作
[root@centos7 ~]# find $HOME/. -name "*.log" -exec rm {} \;
 
#查找当前目录下所有.log文件并将他们拼接起来然后写入到mingongge.txt这个文件中
[root@centos7 ~]# find . -type f -name "*.log" -exec cat {} \;> /mingongge.txt
 
#查找出10天前的.log文件,然后全部移动到mingongge目录下
[root@centos7 ~]# find . -type f -mtime +10 -name "*.log" -exec cp {} mingongge \;
 
#找出当前目录下所有.log文件,然后以“File:文件名”的格式打印输出到屏幕上
[root@centos7 ~]# find . -type f -name "*.log" -exec printf "File: %s\n" {} \;

根据文件大小来查找目标文件

#查找当前目录下文件大小超过500M的文件
[root@centos7 ~]# find . -type f -size +500M     
./mingongge/backup_file.tar.gz
./mingongge/upload.tar.gz
 
#查找当前目录超过500M的文件,并打印出文件的详细属性信息
[root@centos7 ~]# find . -type f -size +800M  -print0 | xargs -0 ls -l         
-rw-r--r-- 1 root root  4250099200 Apr 15  2019 ./mingongge/backup_file.tar.gz
-rw-r--r-- 1 root root 6832225765 Oct 14 12:57 ./mingongge/upload.tar.gz
 
#查找当前目录超过500M的文件,并打印出文件的具体大小
[root@centos7 ~]# find . -type f -size +500M  -print0 | xargs -0 du -h|sort -nr
6.8G    ./mingongge/upload.tar.gz
4G     ./mingongge/backup_file.tar.gz

查找系统中前5的大文件

# find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 5
1.1G    /download/ubuntu-17.04-desktop-amd64.iso
377M    /download/app_backup.tar.gz
100M    /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap

方法有很多种,都需要与其它命令配合使用,才能查找出来。

find 命令在文件查找及其它的应用方面具有强大的功能,学习系统命令,find 命令是需要重点掌握的,不管是平时的学习,还是日后工作中,这个命令都有着非常重要的作用。

标签:文件,20,centos7,查找,Linux,root,find,mingongge
From: https://www.cnblogs.com/xxllx/p/18336299

相关文章

  • 2024短视频掘金项目,AI制作治愈系风景,奇幻天空特效,操作简单,日入3位数
    今日的项目:许多人可能已经在手机上欣赏过那些由AI创造的虚拟场景:小狗在雪地中欢快奔跑,云朵在街头飘荡,或是雨雪中的温馨画面。这些并非真实的摄影作品,而是人工智能的杰作。目前,不少账号仅通过发布这类视频内容,无需真人出镜,便吸引了数万甚至数十万的粉丝。比如在抖音和微信......
  • [BSidesCF 2020]Had a bad day
    [BSidesCF2020]Hadabadday参考:文件包含漏洞Step点一下按钮,发现URL发生改变:url/index.php?category=woofers修改尝试发现回显:​Sorry,wecurrentlyonlysupportwoofersandmeowers.继续尝试修改:url/index.php?category=woofers.php;flag回显:Warn......
  • Linux非常强大的一个命令find
    find命令是Linux和Unix系统中非常强大的一个命令,用于在目录树中搜索文件,并执行指定的操作。它可以基于各种条件来搜索文件,比如文件名、文件类型、大小、修改时间等。基本语法find[搜索路径][选项][操作]搜索路径:指定find命令开始搜索的目录路径。如果省略,则默......
  • LeetCode 2024/8 每日一题合集
    2024-7-1LCP40.心算挑战代码实现classSolution{public:intmaxmiumScore(vector<int>&cards,intcnt){intn=size(cards);std::sort(cards.rbegin(),cards.rend());intsum=std::accumulate(cards.begin(),cards.begin()......
  • 【2024-07-31】医疗资源
    20:00你要记住,永远要愉快地多给别人,少从别人那里拿取。                                                 ——高尔基早上见了客,中午吃完饭,就立刻赶往了医院,陪大宝继续......
  • P7215 [JOISC2020] 首都]
    P7215[JOISC2020]首都考虑对于颜色\(c_i\),若在此颜色集合内所有节点之间的路径上出现了其他颜色(如\(c_j\)),那我们则不得不将这两种颜色合并在一起,操作数加一。即对于颜色\(c_i\),若设其为首都,其答案(操作数)为所有颜色为\(c_i\)的节点之间的路径上的颜色种类......
  • CSP-J2019公交换乘
    马上CSP2024了,做题ing...(题目描述戳它思路1.用结构体双端队列存票,用双端队列的原因是后面要遍历2.结构体元素:price+time+used3.过期的票要及时pop4.不要一边遍历一边pop,用used标记代码#include<bits/stdc++.h>usingnamespacestd;structTicket{intprice......
  • 【2024-07-30】烦琐是福
    20:00不以爱之而苟善,不以恶之而苟非。                                                 ——嵇康下午帮大宝约了眼科,已经拖了三个月的检查终于决定换一家医院去继续检......
  • 【2024-07-29】碰前碰后
    20:00欲而不知足,失其所以欲;有而不知止,失其所以有。                                                 ——司马迁好几天没写日记了,从上周三开始,连续三天都在出差。好久......
  • 科大讯飞哪一款适合初高中 科大讯飞T20Pro值得买吗
    科大讯飞AI学习机T20Pro(8+512GB)则是一款更高配置的学习机,适用于幼小初高全龄段的学生。它拥有8GB的运行内存和512GB的存储空间,性能更加强劲。13.3英寸的屏幕提供了更大的显示区域,让学习更加舒适。T20Pro也配备了科大讯飞的AI技术和星火大模型,能够提供更丰富、更全面的学习资......