Linux常用命令之find命令详解

这篇具有很好参考价值的文章主要介绍了Linux常用命令之find命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

find命令主要用于:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
是我们在日常维护Linux时必备的一个命令。

语法

find 路径 选项 参数

路径

这个很好理解,就是在那个目录下面去进行搜索

选项

可以理解为指定条件,选项有点多,常用的其实也就几个,下面将所有选项都列举出来并解释:

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或--help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-lname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

这个地方需要注意的是:选项可以同时存在多个

参数

就是我们具体要找的东西
可以完全匹配,也可以使用正则表达式

相关使用案例

根据关键字进行查找

在/opt目录下找所有包含php关键字的路径

find /opt -name php

find -name,Linux,运维,linux,服务器,运维

在/opt目录下面找到所有以.txt结束的文件

find /opt -name "*.txt"

find -name,Linux,运维,linux,服务器,运维

# 忽略大小写的写法
find /opt -iname "*.txt"

在当前目录下同时查询以.php和.html结束的文件

find . -name *.php -o -name *.html

find -name,Linux,运维,linux,服务器,运维以此类推如果还需要加一个后缀就再加一个-o -name,如:

find . -name *.php -o -name *.html -o -name *.pdf

匹配目录

find . -path "*test"

find -name,Linux,运维,linux,服务器,运维包含test的目录都会查出来。

基于正则表达式的匹配

# 搜索2位数字的php文件
find . -regex "\./[0-9][0-9]\.php$"
# 搜索3位数字的php文件
find . -regex "\./[0-9][0-9][0-9]\.php$"

find -name,Linux,运维,linux,服务器,运维

根据文件类型进行搜索

find . -type 类型参数
类型参数列表:
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo

# 类型为目录且名字上有php的目录
find . -type d -name "php"

find -name,Linux,运维,linux,服务器,运维也可以规定目录深度:

# 最大深度2
find . -maxdepth 2 -type d -name "php"

find -name,Linux,运维,linux,服务器,运维

# 最小深度2
find . -mindepth 2 -type d -name "php"

find -name,Linux,运维,linux,服务器,运维

搜索指定时间内修改过的文件

-amin n   查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n   查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n   查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件

总结:

UNIX/Linux文件系统每个文件都有三种时间戳:
访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

这个地方需要去理解时间轴:
find -name,Linux,运维,linux,服务器,运维

常用操作:

#搜索最近七天内被访问过的所有文件
find . -type f -atime -7
#搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7
#搜索超过七天内被访问过的所有文件
find . -type f -atime +7
#搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
#找出比file.log修改时间更长的所有文件
find . -type f -newer file.log

find -name,Linux,运维,linux,服务器,运维

指定文件大小来搜索

文件大小单元:
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
常用操作:

# 搜索大于10KB的文件
find . -type f -size +10k
# 搜索小于10KB的文件
find . -type f -size -10k
# 搜索等于10KB的文件
find . -type f -size 10k

find -name,Linux,运维,linux,服务器,运维

根据文件权限/所有权进行搜索

常用操作:

# 当前目录下搜索出权限为777的文件
find . -type f -perm 777
# 找出当前目录下权限不是644的php文件
find . -type f -name "*.php" ! -perm 644
# 找出当前目录用户jack拥有的所有文件
find . -type f -user jack
# 找出当前目录用户组rose拥有的所有文件
find . -type f -group rose

find -name,Linux,运维,linux,服务器,运维

结合-ok/-exec 来执行更多的命令

先来解释一下命令:

find 路径 参数 名字 -ok/-exec 命令 {} \;
解释一下执行的命令:
-ok :主要是会给一个交互
-exec : 直接执行相关的命令
加上这两个参数之后呢,相当于必须去执行一个命令
先给给个前提: {} \; 这个是固定语法, 而且{}和\;之间必须有空格
{} : 用来装前面find命令找到的结果集
\; 表示结束

常用操作:

# 找出自己家目录下所有的.txt文件并删除
find $HOME/. -name "*.txt" -ok rm {} \;
# 查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> /all.txt
# 将30天前的.log文件移动到old目录中
find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
# 找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
# 因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令
-exec ./text.sh {} \;

find -name,Linux,运维,linux,服务器,运维文章来源地址https://www.toymoban.com/news/detail-769220.html

到了这里,关于Linux常用命令之find命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 运维人必会:Linux常用命令合集

    切换目录: 查看文件与目录的命令,list 的缩写: 文本查找: 拥有强大的查找功能: 文件复制: 用于移动文件: 删除文件或目录: 查看进程: 用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号: signal的常用参数如下: 用于向一个命令启动的进程发送一个信

    2024年01月23日
    浏览(43)
  • 【Linux系统基础快速入门详解】Linux核心find命令原理详解和每个命令使用场景以及实例

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) find 命令是在 Linux 操作系统中用于搜索文件和目录的命令行工具。它可以根据不同的条件来搜索特定的文件和目录,这些条件可以是文

    2024年02月07日
    浏览(47)
  • Linux基础笔记10 | 文件查找命令 find 详解

    用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示 学习参考博文:骏马金龙 (junmajinlong.com) 最基础的打印功能

    2024年02月04日
    浏览(32)
  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(62)
  • Linux命令定位与查找:which、whereis和find的用法详解

    在Linux系统中,定位和查找文件是我们经常需要做的任务之一。本文将介绍三个常用的命令: which 、 whereis 和 find ,它们能够帮助我们快速定位或查找文件。 Linux路径环境变量 在开始介绍这些命令之前,我们先来了解一下Linux的路径环境变量。路径环境变量是一个包含多个目

    2024年02月07日
    浏览(39)
  • Linux命令手册-通过文件名查找文件(find、which、locate)(详解)

    目录 一、find命令 1、语法格式 2、选项说明 3、命令示范 二、which命令 1、语法格式 2、命令示范 三、locate命令 1、语法格式 2、命令示范: find命令在Linux中作为文件查找使用频次很高,主要有以下几种方式。 1、语法格式 find [路径] [选项] [操作] 路径:可以指定搜索的文件在

    2024年02月15日
    浏览(27)
  • Linux系统运维:性能监视和分析工具sar命令详解

    目          录 一、sar工具介绍 二、sar工作原理 (一)原理概述 (二)sar数据收集器 三、sar命令语法 四、sar主要功能介绍 (一)功能概述 (二)CPU统计数据 (三)磁盘I/O统计数据 (四)网络统计数据 1、是使用-n DEV选项的sar输出 2、关于网络错误的信息可以用sar -n EDE

    2024年02月21日
    浏览(60)
  • linux常用查看服务器内存的命令

    free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况,其输出和 top 命令的内存部分非常相似。   free 命令的基本格式如下: [root@localhost ~]# free [选项] 表 1 罗列出了此命令常用的选项及各自的含义。 表 1 free 命令

    2024年02月16日
    浏览(59)
  • Linux CentOS 7 服务器集群硬件常用查看命令

    (一)查看内核:uname -a (二)查看系统: cat /etc/redhat-release (三)查看CPU: cat /proc/cpuinfo 或者 lscpu tips:两者命令差不多,lscpu更简洁,主要关注 Core(s) per socket 和 Socket(s) 参数,以及 Thread(s) per core 。后者表示逻辑核心,一般是1,如果使用超线程技术,则是2; CPU(s) 是三者

    2024年04月27日
    浏览(37)
  • 运维:mysql常用的服务器状态命令

    目录 1、查询当前服务器运行的进程 2、查询最大链接数 3、查询当前链接数 4、展示当前正在执行的sql语句 5、查询当前MySQL当中记录的慢查询条数 6、展示Mysql服务器从启动到现在持续运行的时间 7、查询数据库存储占用情况 8、查询服务器启动以来的执行查询的总次数 9、查询

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包