服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux 命令find之查找文件的示例

Linux 命令find之查找文件的示例

2022-03-02 17:03维C果糖 Linux

这篇文章主要介绍了Linux 命令find之查找文件的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在 linux 命令中,find用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找、按正则表达式查找、按文件大小查找、按文件权限查找等多种查询方式。如果在使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

语法:find + 目标目录(路径) + <选项> + 参数

常用选项列表

 

选项 含义
-perm <权限数值> 查找符合指定的权限数值的文件或目录
-type <文件类型> 只寻找符合指定的文件类型的文件
-name <范本样式> 指定字符串作为寻找文件或目录的范本样式
-expty 寻找文件大小为 0 byte 的文件,或目录下没有任何子目录或文件的空目录
-ls 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出
-maxdepth <目录层级> 设置最大目录层级
-mindepth <目录层级> 设置最小目录层级
-exec <执行指令> 假设find指令的回传值为true,就执行该指令
-ok <执行指令> 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答y或y,则放弃执行命令

 

示例

首先,给出演示使用的文件结构:

Linux 命令find之查找文件的示例

示例 1:查找当前目录及其子目录下所有文件和文件夹

?
1
find .

Linux 命令find之查找文件的示例

示例 2:在/testlinux目录下查找以.txt结尾的文件名

?
1
2
// 需要书写完整的路径
find /tmp/cg/testlinux -name "*.txt"

Linux 命令find之查找文件的示例

示例 3:组合查找文件名以file1开头(与、或、非)file2开头的文件

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 组合查找语法:
 * -a    与(取交集)
 * -o    或(取并集)
 * -not   非(同 !)
 * !     非(同 not)
 */
 
find . -name "file1*" -a -name "file2*"
find . -name "file1*" -o -name "file2*"
find . -name "file1*" -not -name "file2*"
find . -name "file1*" ! -name "file2*"

Linux 命令find之查找文件的示例

示例 4:根据文件类型进行搜索

?
1
2
3
4
5
/**
 * 查找当前目录及所有子目录下的普通文件
 */
 
find . -type f

Linux 命令find之查找文件的示例

示例 5:基于目录深度进行搜索

?
1
2
3
4
5
6
7
8
9
10
11
/**
 * 限制最大深度为 3
 */
 
find . -maxdepth 3 -type f
 
/**
 * 限制最大深度为 2
 */
 
find . -maxdepth 2 -type f

Linux 命令find之查找文件的示例

示例 6:基于文件权限进行搜索

?
1
2
3
4
5
6
7
8
9
10
11
/**
 * 搜索权限为 777 的文件
 */
 
find . -type f -perm 777
 
/**
 * 搜索 .txt 格式且权限不为 777 的文件
 */
 
find . -type f -name "*.txt" ! -perm 777

Linux 命令find之查找文件的示例

示例 7:借助-exec命令,将当前目录及子目录下所有.txt格式的文件以file:文件名的形式打印出来

?
1
find . -type f -name "*.txt" -exec printf "file: %s\n" {} \;

Linux 命令find之查找文件的示例

示例 8:借助-exec命令,将当前目录及子目录下所有 3 天前的.txt格式的文件复制一份到old目录

?
1
find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;

Linux 命令find之查找文件的示例

文件类型参数列表

 

文件类型参数 含义
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p fifo

 

文件大小单元列表

 

文件大小单元 含义
b 块(512 字节)
c 字节
w 字(2 字节)
k 千字节
m 兆字节
g 吉字节

 

选项列表

 

选项 含义
-amin <分钟> 查找在指定时间曾被存取过的文件或目录,单位以分钟计算
-atime <24小时数> 查找在指定时间曾被存取过的文件或目录,单位以 24 小时计算
-cmin <分钟> 查找在指定时间之时被更改过的文件或目录
-ctime <24小时数> 查找在指定时间之时被更改的文件或目录,单位以 24 小时计算
-anewer <参考文件或目录> 查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录
-cnewer <参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-daystart 从本日开始计算时间
-depth 从指定目录下最深层的子目录开始查找
-expty 寻找文件大小为 0 byte 的文件,或目录下没有任何子目录或文件的空目录
-exec <执行指令> 假设find指令的回传值为true,就执行该指令
-false 将find指令的回传值皆设为false
-fls <列表文件> 此参数的效果和指定-ls参数类似,但会把结果保存为指定的列表文件
-follow 排除符号连接
-fprint <列表文件> 此参数的效果和指定-print参数类似,但会把结果保存成指定的列表文件
-fprint0 <列表文件> 此参数的效果和指定-print0参数类似,但会把结果保存成指定的列表文件
-fprintf <列表文件> <输出格式> 此参数的效果和指定-printf参数类似,但会把结果保存成指定的列表文件
-fstype <文件系统类型> 只寻找该文件系统类型下的文件或目录
-gid <群组识别码> 查找符合指定群组识别码的文件或目录
-group <群组名称> 查找符合指定群组名称的文件或目录
-help或——help 在线帮助
-name <范本样式> 指定字符串作为寻找文件或目录的范本样式
-iname <范本样式> 此参数的效果和指定-name参数类似,但忽略字符大小写的差别
-ilname <范本样式> 此参数的效果和指定-lname参数类似,但忽略字符大小写的差别
-inum <inode编号> 查找符合指定的inode编号的文件或目录
-path <范本样式> 指定字符串作为寻找目录的范本样式
-ipath <范本样式> 此参数的效果和指定-path参数类似,但忽略字符大小写的差别
-iregex <范本样式> 此参数的效果和指定-regexe参数类似,但忽略字符大小写的差别
-links <连接数目> 查找符合指定的硬连接数目的文件或目录
-ls 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出
-maxdepth <目录层级> 设置最大目录层级
-mindepth <目录层级> 设置最小目录层级
-mmin <分钟> 查找在指定时间曾被更改过的文件或目录,单位以分钟计算
-mount 此参数的效果和指定-xdev相同
-mtime <24小时数> 查找在指定时间曾被更改过的文件或目录,单位以 24 小时计算
-newer <参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-nogroup 找出不属于本地主机群组识别码的文件或目录
-noleaf 不去考虑目录至少需拥有两个硬连接存在
-nouser 找出不属于本地主机用户识别码的文件或目录
-ok <执行指令> 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答y或y,则放弃执行命令
-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参数类似,差别在于它针对符号连接检查

 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/qq_35246620/article/details/79104520

延伸 · 阅读

精彩推荐
  • Linux如何在 Linux 系统设置打印机

    如何在 Linux 系统设置打印机

    如果系统没有自动检测到你的打印机,这篇文章教你如何在 Linux 系统手动添加打印机。...

    Linux中国8872021-09-02
  • Linuxlinux之sed用法

    linux之sed用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一...

    linux教程网3912019-11-07
  • Linux2021 年的十二件 Linux 大事

    2021 年的十二件 Linux 大事

    2021 年即将结束。Linux 今年屡有大事,虽然并不全是好消息。让我来分享一些来自 Linux 世界的大事,这些事件对普通的 Linux 用户,特别是桌面 Linux 用户有...

    Linux中国11352021-12-21
  • LinuxLinux SSH远程文件/目录传输命令scp使用详解

    Linux SSH远程文件/目录传输命令scp使用详解

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,这篇文章主要介绍了Linux SSH远程文件/目录传输命令scp使用详解,需要的朋友可以参考下 ...

    Linux教程网5532019-11-20
  • Linux详解Linux中的守护进程

    详解Linux中的守护进程

    这篇文章主要介绍了详解Linux中的守护进程的相关资料,需要的朋友可以参考下...

    he_shuai206012022-01-24
  • Linux清除指定squid缓存文件的脚本代码分享

    清除指定squid缓存文件的脚本代码分享

    Squid web缓存加速软件目前已经是新浪、搜狐、网易等各大网站广泛应用。Squid会在设置的缓存目录下建立多个目录,每一个目录下又建立多个目录,然后才...

    Linux教程网10422021-04-10
  • LinuxLinux lsof 命令使用详细说明

    Linux lsof 命令使用详细说明

    lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网...

    未知1472019-05-20
  • Linux通过案例深入解析linux NFS机制

    通过案例深入解析linux NFS机制

    这篇文章主要介绍了通过案例深入解析linux NFS机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了4692020-09-21