Linux中 find 命令详解

Linux find 命令是一个强大的文件查找工具,它允许用户根据各种条件在指定的目录及其子目录中递归地搜索文件。

基本结构与用法:

find [starting_directory] [expression(s)] [action]
  • starting_directory:可选参数,指定开始查找的位置,默认为当前目录(.)。可以是绝对路径或相对路径。
  • expression(s):用于匹配文件或目录的一系列条件,例如:
    • -name “filename”:按名称查找文件。
    • -type f/d/l:查找普通文件(f)、目录(d)或符号链接(l)。
    • -mtime/-atime/-ctime n:查找在过去n天内被修改/访问/状态改变过的文件。
    • -size +50k:查找大于50KB的文件。
    • -user username:查找属于特定用户的文件。
    • -perm mode:查找具有特定权限位的文件。
    • -empty:查找空文件或空目录。 等等,还有很多其他表达式。 action:当文件满足所有给定的条件时执行的操作,如:
  • -exec command {} \; :对找到的每个文件执行一个命令。
    • -print: 默认操作,打印出找到的文件或目录的名字(如果未指定其他操作,则会默认使用-print)。
    • -delete:删除找到的文件或目录(需谨慎使用)。

用法举例:

  1. -name pattern 按照文件名匹配。可以使用通配符,如星号(*)代表任意数量的字符,问号(?)代表单个字符。
find /path/to/search -name "file*.txt"  # 查找以“file”开头且扩展名为“.txt”的所有文件
  1. -iname pattern 类似于 -name,但进行不区分大小写的匹配。
 find . -iname "*.jpg"  # 不区分大小写查找所有的JPG文件
  1. -type type 根据文件类型进行匹配,常用的类型有:
    • f:普通文件
    • d:目录
    • l:符号链接(软链接)
 find /home/user -type d  # 查找/home/user下的所有目录
  1. -mtime n 查找在过去n天内最后一次修改时间发生改变的文件。n可以是正数(表示从现在起往前推算)、负数(表示从现在起向后推算)或0(表示查找访问时间正好为n天前的文件)。
find . -mtime -7  # 查找当前目录及其子目录下7天内被修改过的文件
  1. -size size 根据文件大小进行匹配,单位可以是c(字节),k(KB),M(MB),G(GB)等。
find /var/log -size +10M  # 查找/var/log下大于10MB的所有文件
  1. -user username 根据属主用户名查找文件。
 find /home -user john  # 查找/home下属主为john的所有文件和目录
  1. -group groupname 根据所属组名称查找文件。
find /shared -group developers  # 查找/shared下属于developers组的所有文件和目录
  1. -perm mode 根据权限模式查找文件。可以指定完整的八进制权限模式或者部分模式(例如,只检查其他用户的执行权限时可以使用-perm o+x)。
find . -perm 755  # 查找当前目录及其子目录下具有rwxr-xr-x权限的文件和目录
  1. -empty 查找空文件或空目录。
find /var/tmp -type f -empty  # 查找/var/tmp下所有空文件

这些条件参数可以组合使用,形成复杂的搜索表达式。例如,要查找所有由特定用户拥有的、并且在过去一周内被修改过的大于10MB的文本文件,可以这样写:

find / -type f -user alice -mtime -7 -size +10M -name "*.txt"

注意事项:

  1. 使用 find 命令时应确保有足够权限访问所搜索的目录和文件。
  2. -exec 后面的命令应当正确转义分号 \;,以结束命令序列。
  3. 对于可能包含特殊字符的文件名,可能需要使用双引号 " 将其包围起来以避免shell扩展错误。 请根据实际需求组合不同的表达式来构造适合的 find 命令。
  • 20
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值