热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

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

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

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

常用选项列表

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

示例

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

0000

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

find .

01

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

// 需要书写完整的路径
find /tmp/cg/testLinux -name "*.txt"

02

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

/**
 * 组合查找语法:
 * -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*"

03

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

/**
 * 查找当前目录及所有子目录下的普通文件
 */

find . -type f

04

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

/**
 * 限制最大深度为 3
 */

find . -maxdepth 3 -type f

/**
 * 限制最大深度为 2
 */

find . -maxdepth 2 -type f

05

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

/**
 * 搜索权限为 777 的文件
 */

find . -type f -perm 777

/**
 * 搜索 .txt 格式且权限不为 777 的文件
 */

find . -type f -name "*.txt" ! -perm 777

06

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

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

07

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

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

08

文件类型参数列表

文件类型参数 含义
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编号的文件或目录
-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参数类似,差别在于它针对符号连接检查

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


推荐阅读
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文定期更新,涵盖虚拟化技术的基础知识、Xen虚拟机架构详解、KVM架构与原理、QEMU模拟器的功能及使用方法。同时,文章还探讨了不同虚拟化技术之间的比较与联系,以及如何利用这些技术进行网络配置和虚拟磁盘管理。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 2019年独角兽企业招聘Python工程师标准课程概览
    本文详细介绍了2019年独角兽企业在招聘Python工程师时的标准课程内容,包括Shell脚本中的逻辑判断、文件属性判断、if语句的特殊用法及case语句的应用。 ... [详细]
  • 在使用 PyInstaller 将 Python 应用程序打包成独立的可执行文件时,若项目中包含动态加载的库或插件,需要正确配置 --hidden-import 和 --add-binary 参数,以确保所有依赖项均能被正确识别和打包。 ... [详细]
  • 解决Linux中wget无法解析主机的问题
    本文介绍了如何通过修改/etc/resolv.conf文件来解决Linux系统中wget命令无法解析主机名的问题,通过添加Google的公共DNS服务器地址作为解决方案。 ... [详细]
  • 本文探讨了服务器系统架构的性能评估方法,包括性能评估的目的、步骤以及如何选择合适的度量标准。文章还介绍了几种常用的基准测试程序及其应用,并详细说明了Web服务器性能评估的关键指标与测试方法。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
author-avatar
乐在hhh其中
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有