[广告: 最高 ¥2000 红包]阿里云服务器, 主机等产品通用, 可叠加官网常规优惠使用 | 限时领取
Linux 查找命令是 Linux 系统中最重要和最常用的命令之一. 查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令. 查找可以在各种条件下使用, 您可以通过权限, 用户, 组, 文件类型, 日期, 大小等可能的条件查找文件.
语法
find [目标路径] [条件选项] [处理动作]
条件选项
根据文件名查找
-name: 根据文件名查找
-iname: 忽略目标文件名的大小写
支持通配符:
- *,?,[],[^]
- find /etc -name(-iname) "passwd"
查找 / etc 目录下名字里面包含 passwd 的文件
find /etc -name(-iname) "p*"
查找 / etc 目录下以 p 开头的文件
根据文件类型查找
-type: 根据文件类型查找
f: 普通文件
d: 目录文件
l: 符号链接文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
s: 套接字文件
例: find /etc -type f 查找 / etc 目录下是文件.
根据文件的从属关系
-user USERNAME: 查找属主指定用户的所有文件
find /etc -user root
查找 / etc 属主为 root 的所有文件
-group GROUPNAME: 查找属组指定组的所有文件
-uid UID: 查找属主指定的 UID 的所有文件
-gid GID: 查找属组指定的 GID 的所有文件
-nousr: 查找没有属主的文件
-nogroup: 查找没有属组的文件
根据文件大小查找
-size: 根据文件大小查找
常用单位: K,M,G, 例:
find /etc -size [+|-]1K
查找 / etc 下所有大于 | 小于 1K 的文件
根据时间戳查找
默认以天为单位
- -atime -n # 表示文件被读取时间距现在 n 天以内
- -atime +n # 表示文件被读取时间距现在 n 天以前
- -ctime -6h30m # 表示 6 小时 30 分钟以内状态发生改变的文件
- -mtime +1w # 表示 1 周以前被修改的文件
其中 time 前面的 a/m/c, 分别为:
Access - 文件最后被读取的时间
Modify - 文件内容最后被修改时间
Change - 文件元数据最后被修改时间(如, 权限)
下同.
查找比某个文件旧或新的文件
-newer file.txt 查找创建时间比 file.txt 新的文件
- -newerm file.txt # modified newer than file.txt 查找修改时间比 file.txt 新的文件
- -newerX file.txt # X 可用参数为 c/m/b, 其中 [c]hange, [m]odified, [B]create
- -newerXt "1 hour ago" # [t]imestamp 查找比 1 小时前修改 / 创建要早的文件
查找深度(到多少级子目录)
-depth NUM: 在查找文件时, 首先查找当前目录中的文件, 然后再在其子目录 (最多 NUM 层) 中查找.
-maxdepth NUM : 指定最多搜索目录层级到 NUM 层
-mindepth NUM : 指定最少搜索目录 NUM 层级
根据文件权限查找
-perm: 根据文件权限查找
-perm [/|-] 权限
例:
find /etc -perm 666 查找 / etc 下权限为 666 的所有文件
find /etc -perm /222 查找 / etc 下 [u,g,o] 任何一类用户有写权限的文件
find /etc -perm -222 查找 / etc 下 [u,g,o] 同时满足写权限的文件
组合参数
-a: 与
find /etc -name "passwd" -a -user root
查找 / etc 下名字含有 "passwd" 且属主为 root 的文件名
-o: 或
find /etc -type f -o -size +10K
查找 / etc 下类型为文件或文件大小大于 10k 以上的文件
-not|!: 非
find /etc ! -name "passwd"
查找 / etc 下名字里没有 passwd 的文件
处理动作
-print: 默认的, 输出至标准输出
-ls: 相当于执行 ls -l
-delete: 对查找到的文件进行删除
-fls: 对查找到的文件以长格式的方式保存到指定的文件中
find 命令可以结合 xargs 命令, 避免了有些命令过长导致报错; 下面介绍下 xargs 的简单用法:
xargs 命令: 将前一个命令的输出作为参数
作用: 是将参数列表转换成小块分段传递给其他命令, 以避免参数列表过长的问题
格式: xargs [options] [command]...
常用选项:
-p: 操作具有可交互性
-i: 得到的每项名称替换为{}
-n: 限制单个命令行的参数
-t: 输出命令执行的详细信息
例:
find /etc -name "passwd" | xargs -t ls -lh
查找 / etc 下名字有 passwd 包含的文件并且人性化的输出.
参考资料
- Find cheatsheet https://devhints.io/find
- How to Use find Command on Linux? 40 Examples Included - Geekflare https://geekflare.com/linux-find-commands/
来源: http://www.mzh.ren/linux-mac-find-detail.html