FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • man
  • man1
    • Mail.1
    • addr2line.1
    • alias.1
    • alloc.1
    • apply.1
    • apropos.1
    • ar.1
    • at.1
    • atq.1
    • atrm.1
    • awk.1
    • basename.1
    • batch.1
    • bc.1
    • bg.1
    • bind.1
    • bindkey.1
    • break.1
    • breaksw.1
    • bsdcat.1
    • bsdtar.1
    • btsockstat.1
    • builtin.1
    • builtins.1
    • c++.1
    • case.1
    • cat.1
    • cc.1
    • chdir.1
    • chfn.1
    • chgrp.1
    • chkey.1
    • chmod.1
    • cksum.1
    • clang++.1
    • clang-cpp.1
    • cmp.1
    • colrm.1
    • column.1
    • comm.1
    • command.1
    • complete.1
    • continue.1
    • cp.1
    • cpp.1
    • crypt.1
    • csh.1
    • ctfdump.1
    • cut.1
    • date.1
    • dd.1
    • default.1
    • df.1
    • dialog.1
    • diff.1
    • diff3.1
    • dirname.1
    • dirs.1
    • do.1
    • done.1
    • dtrace.1
    • du.1
    • echo.1
    • echotc.1
    • edit.1
    • ee.1
    • egrep.1
    • elfdump.1
    • elif.1
    • else.1
    • end.1
    • endif.1
    • endsw.1
    • enigma.1
    • env.1
    • esac.1
    • eval.1
    • exec.1
    • exit.1
    • export.1
    • fc.1
    • fg.1
    • fgrep.1
    • fi.1
    • filetest.1
    • find.1
    • for.1
    • foreach.1
    • fsync.1
    • ftp.1
    • fuser.1
    • gate-ftp.1
    • getopts.1
    • glob.1
    • goto.1
    • grep.1
    • groups.1
    • gunzip.1
    • gzcat.1
    • gzip.1
    • hash.1
    • hashstat.1
    • head.1
    • history.1
    • host.1
    • hostname.1
    • hup.1
    • ibv_asyncwatch.1
    • ibv_devices.1
    • ibv_devinfo.1
    • ibv_ud_pingpong.1
    • id.1
    • ident.1
    • if.1
    • intro.1
    • introduction.1
    • jobid.1
    • jobs.1
    • kdump.1
    • kenv.1
    • keylogin.1
    • keylogout.1
    • kill.1
    • killall.1
    • ktrace.1
    • last.1
    • lastcomm.1
    • ld.1
    • ld.lld.1
    • ldd.1
    • ldd32.1
    • less.1
    • lessecho.1
    • limit.1
    • limits.1
    • link.1
    • llvm-addr2line.1
    • llvm-ranlib.1
    • ln.1
    • locate.1
    • lockstat.1
    • log.1
    • logger.1
    • login.1
    • logname.1
    • logout.1
    • look.1
    • lorder.1
    • ls-F.1
    • ls.1
    • lsvfs.1
    • lzcat.1
    • lzma.1
    • lzmadec.1
    • lzmainfo.1
    • mailx.1
    • make.1
    • man.1
    • mandoc.1
    • manpath.1
    • md5.1
    • mdocml.1
    • mkdir.1
    • mkfilters.1
    • more.1
    • mv.1
    • nawk.1
    • nc.1
    • netstat.1
    • newaliases.1
    • nice.1
    • notify.1
    • onintr.1
    • pagesize.1
    • passwd.1
    • paste.1
    • pax.1
    • perror.1
    • pftp.1
    • popd.1
    • printenv.1
    • ps.1
    • pushd.1
    • pwd.1
    • qemu.1
    • ranlib.1
    • read.1
    • readelf.1
    • readlink.1
    • readonly.1
    • realpath.1
    • ree.1
    • rehash.1
    • repeat.1
    • rev.1
    • revoke.1
    • rgrep.1
    • rm.1
    • rmd16.1
    • rmdir.1
    • rping.1
    • ruptime.1
    • rwho.1
    • sched.1
    • scp.1
    • sdiff.1
    • sed.1
    • seq.1
    • set.1
    • setenv.1
    • settc.1
    • setty.1
    • setvar.1
    • sftp.1
    • sh.1
    • sha1.1
    • sha224.1
    • sha256.1
    • sha384.1
    • sha512.1
    • sha512t256.1
    • shift.1
    • skein1024.1
    • skein256.1
    • skein512.1
    • slogin.1
    • sockstat.1
    • sort.1
    • source.1
    • split.1
    • ssh-copy-id.1
    • ssh-keygen.1
    • ssh.1
    • stat.1
    • stop.1
    • su.1
    • suspend.1
    • svnlite.1
    • switch.1
    • systat.1
    • tail.1
    • tar.1
    • tcpdump.1
    • tcsh.1
    • telltc.1
    • telnet.1
    • then.1
    • time.1
    • timeout.1
    • times.1
    • top.1
    • touch.1
    • trap.1
    • truncate.1
    • truss.1
    • type.1
    • ulimit.1
    • umask.1
    • unalias.1
    • uname.1
    • uncomplete.1
    • unhash.1
    • uniq.1
    • unlimit.1
    • unlink.1
    • unlzma.1
    • unset.1
    • unsetenv.1
    • until.1
    • unxz.1
    • uptime.1
    • users.1
    • uuidgen.1
    • view.1
    • w.1
    • wait.1
    • wall.1
    • wc.1
    • whatis.1
    • where.1
    • whereis.1
    • which.1
    • while.1
    • who.1
    • whoami.1
    • xargs.1
    • xz.1
    • xzcat.1
    • xzdec.1
    • xzdiff.1
    • yes.1
    • yppasswd.1
    • zcat.1
    • zcmp.1
    • zdiff.1
    • zforce.1
    • zless.1
    • zmore.1
    • znew.1
  • man4
    • ow.4
    • ow_temp.4
    • owc.4
  • man5
    • device.hints.5
  • man7
    • hire
  • man8
    • adduser.8
    • authpf-noip.8
    • authpf.8
    • autounmountd.8
    • beastie.4th.8
    • bhyve.8
    • bhyvectl.8
    • bhyveload.8
    • blacklistctl.8
    • boot.8
    • boot0cfg.8
    • boot_i386.8
    • bsdconfig.8
    • camcontrol.8
    • check-password.4th.8
    • chown.8
    • chroot.8
    • config.8
    • crash.8
    • crashinfo.8
    • devctl.8
    • devinfo.8
    • devmatch.8
    • diskinfo.8
    • dmesg.8
    • fastboot.8
    • fasthalt.8
    • freebsd-update.8
    • fstyp.8
    • ftp-proxy.8
    • ftpd.8
    • gpart.8
    • gpioctl.8
    • gptboot.8
    • gptzfsboot.8
    • growfs.8
    • halt.8
    • i2c.8
    • ifconfig.8
    • inetd.8
    • init.8
    • intro.8
    • iostat.8
    • ipfw.8
    • jail.8
    • jexec.8
    • jls.8
    • kldconfig.8
    • kldload.8
    • kldstat.8
    • kldunload.8
    • kldxref.8
    • lastlogin.8
    • loader.4th.8
    • loader.8
    • loader.efi.8
    • mail.local.8
    • mailstats.8
    • menu.4th.8
    • mount.8
    • mount_cd9660.8
    • mount_msdosfs.8
    • moused.8
    • mtree.8
    • natd.8
    • nmtree.8
    • ntptime.8
    • password.lua.8
    • periodic.8
    • ping.8
    • pkg.8
    • pmccontrol.8
    • pmcstat.8
    • powerd.8
    • poweroff.8
    • pw.8
    • pwm.8
    • quot.8
    • rarpd.8
    • rc.8
    • rc.d.8
    • rc.firewall.8
    • rc.local.8
    • rc.network.8
    • rc.pccard.8
    • rc.resume.8
    • rc.serial.8
    • rc.shutdown.8
    • rc.subr.8
    • rcorder.8
    • reboot.8
    • renice.8
    • rescue.8
    • rmuser.8
    • route.8
    • route6d.8
    • routed.8
    • rpc.rusersd.8
    • service.8
    • shutdown.8
    • spi.8
    • ssh-keysign.8
    • sysctl.8
    • sysrc.8
    • tcpdrop.8
    • tftpd.8
    • tzsetup.8
    • umount.8
    • vmstat.8
    • watchdog.8
    • watchdogd.8
    • zfs.8
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 名称
  • 概要
  • 综述
  • 基元
  • 运算符
  • 环境
  • 实例
  • 兼容性
  • 参见
  • 标准
  • 历史
  • 缺陷
在GitHub上编辑
导出为 PDF
  1. man1

find.1

FIND(1)

FIND(1)

FreeBSD General Commands Manual

FIND(1)

名称

find —

遍历文件层次结构

概要

find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

综述

find 实用程序递归地向下列出每个 path 的目录树,根据树中的每个文件评估一个 expression (由下面列出的 “primaries” 和 “operands” 组成) 。

选项如下:

-E

将后跟 -regex 和 -iregex 主表达式的正则表达式解释为扩展(现代)正则表达式,而不是基本正则表达式 (BRE)。 re_format(7) 手册页完整地描述了这两种格式。

-H

导致为命令行上指定的每个符号链接返回的文件信息和文件类型(请参阅 stat(2) )是链接引用的文件的信息和文件类型,而不是链接本身。 如果引用的文件不存在,则文件信息和类型将用于链接本身。 所有不在命令行上的符号链接的文件信息都是链接本身的文件信息。

-L

导致为每个符号链接返回的文件信息和文件类型(请参阅 stat(2) )是链接引用的文件的信息和文件类型,而不是链接本身。 如果引用的文件不存在,则文件信息和类型将用于链接本身。

此选项等效于已弃用的 -follow 主选项。

-P

导致为每个符号链接返回的文件信息和文件类型(参见 stat(2) )是链接本身的信息和文件类型。 这是默认设置。

-X

允许 find 与 xargs(1) 一起安全使用。 如果文件名包含 xargs(1) 使用的任何定界字符,则会在标准错误中显示诊断消息,并跳过该文件。 定界字符包括单引号 (“ ' ”) 和双引号 (“ " ”) 、反斜杠 (“\”) 、空格、制表符和换行符。

但是,您可能希望将 -print0 主节点与 “xargs -0” 结合使用作为一种有效的替代方法。

-d

导致 find 执行深度优先遍历。

此选项是 IEEE Std 1003.1-2001 (“POSIX.1”) 指定的 -depth primary 的 BSD 特定等效项。 有关详细信息,请参阅其在 PRIMARIES 下的描述。

-s

导致 find 按字典顺序(即每个目录中的字母顺序)遍历文件层次结构。 注意: ‘find -s’ 和 ‘find | sort’ 可能会给出不同的结果。

-x

防止 find 下降到设备号不同于下降开始的文件的设备号的目录中。

此选项等效于已弃用的 -xdev 主选项。

基元

所有带数字参数的初选都允许数字前面有加号 (“+”) 或减号 (“-”) 。 前面的加号表示 “more than n”, ,前面的减号表示 “less than n” ,两者都不表示 “exactly n” 。

-Bmin n

如果文件的 inode 创建时间与开始 find 的时间之间的差异(向上舍入到下一整分钟)为 n 分钟,则为真。

-Bnewer file

与 -newerBm 相同。

-Btime n[smhdw]

如果未指定单位,则如果文件的 inode 创建时间与开始 find 时间之间的差异(向上舍入到下一个完整的 24 小时周期)为 n 24 小时周期,则此主节点评估为 true。

如果指定了单位,则如果文件的 inode 创建时间与开始 find 的时间之间的差正好是 n 个单位,则此主节点的计算结果为 true。 有关支持的时间单位的信息,请参阅 -atime 主要描述。

-acl

可以与其他主文件结合使用来定位具有扩展 ACL 的文件。 有关详细信息,请参阅 acl(3) 。

-amin [-|+]n

如果文件上次访问时间和开始 find 时间之间的差异(向上舍入到下一个完整分钟)大于 n (+n) 、小于 n (-n) 或恰好在 n 分钟前,则为真。

-anewer file

与 -neweram 相同。

-atime n[smhdw]

如果未指定单位,则如果文件上次访问时间与开始 find 时间之间的差值(向上舍入到下一个完整的 24 小时周期)为 n 个 24 小时周期,则此主要计算结果为 true。

如果指定了单位,则如果文件上次访问时间和开始 find 的时间之间的差正好是 n 个单位,则此主节点评估为真。 可能的时间单位如下:

s

秒

m

分钟(60 秒)

h

小时(60 分钟)

d

一天(24 小时)

w

周(7天)

任意数量的单位可以组合在一个 -atime 参数中,例如, “-atime -1h30m” 。单位可能仅在与 + 或 - 修饰符一起使用时才有用。

-cmin [-|+]n

如果最后一次更改文件状态信息的时间与开始 find 的时间之间的差异(向上舍入到下一整分钟)大于 n (+n) 、小于 n (-n) 或恰好 n 分钟,则为真前。

-cnewer file

与 -newercm 相同。

-ctime n[smhdw]

如果未指定单位,则如果文件状态信息的最后更改时间与开始 find 的时间之间的差值(向上舍入到下一个完整的 24 小时周期)为 n 个 24 小时周期,则此主要计算结果为 true。

如果指定了单位,则如果文件状态信息的最后一次更改时间与开始 find 的时间之间的差异正好是 n 个单位,则此主要计算结果为 true。 有关支持的时间单位的信息,请参阅 -atime 主要描述。

-d

不可移植的、特定于 BSD 的 depth 版本。 GNU find 在错误地模拟 FreeBSD find 时将其作为主要实现。

-delete

删除找到的文件与/或目录。总是返回真。这从当前工作目录执行,因为 find 沿着树递归。 它不会尝试删除相对于 “.” 的路径名中带有 “/” 字符的文件名。出于安全原因。 此选项隐含深度优先遍历处理。 如果目录不为空, -delete primary 将无法删除目录。以下符号链接与此选项不兼容。

-depth

永远正确;与不可移植的 -d 选项相同。导致 find 执行深度优先遍历,即以后序访问目录,并且目录中的所有条目将在目录本身之前执行。 默认情况下,按预定顺序 find 访问目录,即在其内容之前。 注意,默认 不是 广度优先遍历。

当 find 与 cpio(1) 一起使用以处理包含在具有异常权限的目录中的文件时, -depth primary 会很有用。 它确保您在将文件放入目录时具有写权限,然后将目录的权限设置为最后一件事。

-depth n

如果文件相对于遍历起点的深度为 n ,则为真。

-empty

如果当前文件或目录为空,则为真。

-exec utility [argument ...] ;

如果名为 utility 的程序返回零值作为其退出状态,则为真。 可选 arguments 可以传递给实用程序。 表达式必须以分号 (“;”) 结束。 如果从 shell 调用 find- ,如果 shell 将其视为控制运算符,则可能需要引用分号。 如果字符串 “{}” 出现在实用程序名称或参数中的任何位置,则将其替换为当前文件的路径名。 Utility 将从执行 find 的目录中执行。 Utility 和 arguments 不受外壳模式和结构的进一步扩展。

-exec utility [argument ...] {} +

与 -exec 相同,但每次调用 utility 时, “{}” 被尽可能多的路径名替换。 此行为类似于 xargs(1) 的行为。主节点始终返回 true;如果至少一次 utility 调用返回非零退出状态, find 将返回非零退出状态。

-execdir utility [argument ...] ;

-execdir primary 与 -exec primary 相同,但 utility 将从保存当前文件的目录执行。 替换字符串 “{}” 的文件名不合格。

-execdir utility [argument ...] {} +

与 -execdir 相同,但每次调用 utility 时, “{}” 被尽可能多的路径名替换。 此行为类似于 xargs(1) 的行为。 主节点始终返回 true;如果至少一次 utility 调用返回非零退出状态, find 将返回非零退出状态。

-flags [-|+]flags,notflags

使用符号名称指定标志(请参阅 chflags(1) )。 带有 “no” 前缀的那些( “nodump”) 除外)被称为 notflags 。 flags 中的标志被检查为已设置,而 notflags 中的标志被检查为未设置。 请注意,这与 -perm 不同,后者仅允许用户指定设置的模式位。

如果标志前面有一个破折号 (“-”) ,如果至少 flags 中的所有位和 notflags 中的任何位都未在文件的标志位中设置,则此主要计算结果为真。 如果 flags 前面有一个加号 (“+”) ,如果 flags 中的任何位在文件的标志位中被设置,或者 notflags 中的任何位在文件的标志位中没有被设置,则此主元计算为 true。 否则,如果 flags 中的位与文件的 flags 位完全匹配,并且没有一个 flags 位与 notflags 的位匹配,则此主要计算结果为 true。

-fstype type

如果文件包含在 type 类型的文件系统中,则为真。 lsvfs(1) 命令可用于找出系统上可用的文件系统类型。 此外,还有两种伪类型, “local” 和 “rdonly” 。 前者匹配任何物理安装在执行 find 的系统上的文件系统,后者匹配任何以只读方式安装的文件系统。

-gid gname

与 -group gname 相同,用于与 GNU find 兼容。 GNU find 施加了一个限制,即 gname 是数字,而 find 没有。

-group gname

如果文件属于组 gname ,则为真。 如果 gname 是数字并且没有这样的组名,则 gname 被视为组 ID。

-ignore_readdir_race

忽略错误,因为从目录读取名称后文件或目录被删除。 此选项不影响起点上发生的错误。

-ilname pattern

与 -lname 类似,但匹配不区分大小写。 这是一个 GNU 查找扩展。

-iname pattern

与 -name 类似,但匹配不区分大小写。

-inum n

如果文件的 inode 编号为 n ,则为真。

-ipath pattern

与 -path- 类似,但匹配不区分大小写。

-iregex pattern

与 -regex 类似,但匹配不区分大小写。

-iwholename pattern

与 -ipath 相同,为 GNU 找到兼容性。

-links n

如果文件有 n 个链接,则为真。

-lname pattern

与 -name 类似,但匹配的是符号链接的内容而不是文件名。 请注意,这仅在遵循符号链接时才匹配损坏的符号链接。 这是一个 GNU 查找扩展。

-ls

这个主要的总是评估为真。 当前文件的以下信息被写入标准输出:它的 inode 编号、512 字节块的大小、文件权限、硬链接数、所有者、组、字节大小、最后修改时间和路径名。 如果文件是块或字符特殊文件,将显示设备号而不是字节大小。 如果文件是符号链接,则链接到的文件的路径名将显示在 “->” 前面。 格式与 “ls -dgils” 生成的格式相同。

-maxdepth n

永远正确;在命令行参数下最多下降 n 个目录级别。 如果指定了任何 -maxdepth ,则它适用于整个表达式,即使它通常不会被计算。 “-maxdepth 0” 将整个搜索限制为命令行参数。

-mindepth n

永远正确;不要在低于 n 的级别上应用任何测试或操作。 如果指定了任何 -mindepth ,则它适用于整个表达式,即使它通常不会被计算。 “-mindepth 1” 处理除命令行参数之外的所有参数。

-mmin [-|+]n

如果文件上次修改时间和开始 find 时间之间的差异(向上舍入到下一整分钟)大于 n (+n) 、小于 n (-n) 或恰好在 n 分钟前,则为真。

-mnewer file

与 -newer 相同。

-mount

与 -xdev 相同,用于 GNU 查找兼容性。

-mtime n[smhdw]

如果未指定单位,则如果文件上次修改时间和开始 find 时间之间的差值(向上舍入到下一个完整的 24 小时周期)为 n 个 24 小时周期,则此主要计算结果为 true。

如果指定了单位,则如果文件上次修改时间和开始 find 的时间之间的差正好是 n 个单位,则此主文件的计算结果为 true。 有关支持的时间单位的信息,请参阅 -atime 主要描述。

-name pattern

如果正在检查的路径名的最后一个组件与 pattern 匹配,则为真。 特殊的 shell 模式匹配字符 (“[ 、” “] 、” “*” 和 “?”) 可以用作 pattern 的一部分。 这些字符可以通过使用反斜杠 (“\”) 转义来显式匹配。

-newer file

如果当前文件的最后修改时间比 file 更新,则为真。

-newerXY file

如果当前文件的上次访问时间 (X=a) 、inode 创建时间 (X=B) 、更改时间 (X=c) 或修改时间 (X=m) 比上次访问时间 (Y=a) 、inode 创建时间 (Y=B) 、更改时间 (Y=c) 或 file 修改时间 (Y=m) 。 此外,如果 Y=t ,则 file 被解释为 cvs(1) 所理解形式的直接日期规范。 请注意, -newermm 等效于 -newer 。

-nogroup

如果文件属于未知组,则为真。

-noignore_readdir_race

关闭 -ignore_readdir_race 的效果。这是默认行为。

-noleaf

此选项用于 GNU 查找兼容性。 在 GNU find 中,它禁用了与 find 无关的优化,因此它被忽略了。

-nouser

如果文件属于未知用户,则为真。

-ok utility [argument ...] ;

-ok primary 与 -exec primary 相同,不同之处在于 find 通过向终端打印消息并读取响应来请求用户确认 utility 的执行。 如果响应不是肯定的( “POSIX” 语言环境中的 ‘y’ ), 则不执行命令并且 -ok 表达式的值为 false。

-okdir utility [argument ...] ;

-okdir 主节点与 -execdir 主节点相同,但与 -ok 主节点的描述相同。

-path pattern

如果正在检查的路径名与 pattern 匹配,则为真。 特殊的 shell 模式匹配字符 (“[ 、” “] 、” “*” 和 “?”) 可以用作 pattern 的一部分。 这些字符可以通过使用反斜杠 (“\”) 转义来显式匹配。 斜杠 (“/”) 被视为普通字符,不必显式匹配。

-perm [-|+]mode

mode 可以是符号(参见 chmod(1) )或八进制数。 如果 mode 是符号模式,则假定起始值为零,并且 mode 设置或清除权限,而不考虑进程的文件模式创建掩码。 如果 mode 是八进制,则只有文件模式位的位 07777 (S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) 参与比较。 如果 mode 前面有一个破折号 (“-”) ,那么如果 mode 中的至少所有位都在文件的模式位中设置,则此主要计算结果为真。 如果 mode 前面有一个加号 (“+”) ,如果 mode 中的任何位在文件的模式位中设置,则此主要计算结果为真。 否则,如果 mode 中的位与文件的模式位完全匹配,则此主要计算结果为真。 请注意,符号模式的第一个字符可能不是破折号 (“-”) 。

-print

这个主要的总是评估为真。 它将当前文件的路径名打印到标准输出。 如果没有指定 -exec 、 -ls 、 -print0 或 -ok ,则给定表达式应有效地替换为 ( 给定表达式 ) -print 。

-print0

这个主要的总是评估为真。 它将当前文件的路径名打印到标准输出,后跟一个 ASCII NUL 字符(字符代码 0)。

-prune

这个主要的总是评估为真。 它导致 find 不会下降到当前文件中。 请注意,如果指定了 -d 选项,则 -prune primary 无效。

-quit

导致 find 立即终止。

-regex pattern

如果文件的整个路径使用正则表达式匹配 pattern ,则为真。 要匹配名为 “./foo/xyzzy” 的文件,您可以使用正则表达式 “.*/[xyz]*” 或 “.*/foo/.*” 但不能使用 “xyzzy” 或 “/foo/” 。

-samefile name

如果文件是 name 的硬链接,则为真。 如果指定了命令选项 -L ,那么如果文件是符号链接并指向 name ,它也是如此。

-size n[ckMGTP]

如果文件的大小(以 512 字节块为单位,向上取整)为 n ,则为真。 如果 n 后跟 c ,则如果文件大小为 n 字节(字符),则主要为真。 类似地,如果 n 后跟一个比例指示符,则文件的大小与 n 进行比较,比例为:

k

千字节(1024 字节)

M

兆字节(1024 KB)

G

千兆字节(1024 兆字节)

T

太字节(1024 GB)

P

PB(1024 TB)

-sparse

如果当前文件是稀疏的,即根据其字节大小分配的块少于预期,则为真。 这也可能匹配已被文件系统压缩的文件。

-type t

如果文件属于指定类型,则为真。 可能的文件类型如下:

b

特殊块

c

特殊字符

d

目录

f

常规文件

l

符号链接

p

FIFO

s

套接字

-uid uname

与 -user uname 相同,用于与 GNU find 兼容。 GNU find 施加了一个限制,即 uname 是数字,而 find 不是。

-user uname

如果文件属于用户 uname ,则为真。 如果 uname 是数字并且没有这样的用户名,则 uname 被视为用户 ID。

-wholename pattern

与 -path 相同,为 GNU 找到兼容性。

运算符

可以使用以下运算符组合初选。 运算符按优先级降序排列。

[(](#() expression )

如果括号内的表达式计算结果为真,则计算结果为真。

! expression

-not expression

这是一元 NOT 运算符。 如果表达式为假,则计算结果为真。

-false

总是假的。

-true

永远是真的。

expression -and expression

expression expression

-and 运算符是逻辑 AND 运算符。 由于两个表达式的并列暗示了它,因此不必指定它。 如果两个表达式都为真,则表达式的计算结果为真。 如果第一个表达式为假,则不计算第二个表达式。

expression -or expression

-or 运算符是逻辑 OR 运算符。 如果第一个或第二个表达式为真,则表达式的计算结果为真。 如果第一个表达式为真,则不计算第二个表达式。

所有操作数和主数必须是单独的参数来 find 。 初选,自己带参数希望每个参数是一个单独的参数 find 。

环境

LANG 、 LC_ALL 、 LC_COLLATE 、 LC_CTYPE 、 LC_MESSAGES 和 LC_TIME 环境变量会影响 find 实用程序的执行,如 environ(7) 中所述。

实例

以下示例显示为给 shell:

[find / \! -name "*.c" -print](#find_/e!_-name(dq*.c_(dq_-print)

打印出名称不以 .c 结尾的所有文件的列表。

find / -newer ttt -user wnj -print

打印出用户 “wnj” 拥有的比文件 ttt 更新的所有文件的列表。

find / \! \( -newer ttt -user wnj \) -print

打印出所有不比 ttt 新且属于 “wnj” 的文件的列表。

find / \( -newer ttt -or -user wnj \) -print

打印出属于 “wnj” 或比 ttt 更新的所有文件的列表。

find / -newerct '1 minute ago' -print

打印出所有 inode 更改时间比当前时间减去一分钟的文件的列表。

find / -type f -exec echo {} \;

使用 echo(1) 命令打印出所有文件的列表。

find -L /usr/ports/packages -type l -exec rm -- {} +

删除 /usr/ports/packages 中所有损坏的符号链接。

find /usr/src -name CVS -prune -o -depth +6 -print

在工作目录 /usr/src 中查找至少七层深的文件和目录。

find /usr/src -name CVS -prune -o -mindepth 7 -print

不等同于前面的示例,因为 -prune 不会在七级以下进行评估。

兼容性

-follow 已弃用;应该使用 -L- 选项。 有关详细信息,请参阅下面的 标准 部分。

参见

chflags(1) 、 chmod(1) 、 cvs(1) 、 locate(1) 、 lsvfs(1) 、 whereis(1) 、 which(1) 、 xargs(1) 、 stat(2) 、 acl(3) 、 fts(3) 、 getgrent(3) 、 getpwent(3) 、 strmode(3) 、 re_format(7) 、 symlink(7)

标准

find 实用程序语法是 IEEE Std 1003.1-2001 (“POSIX.1”) 标准指定的语法的超集。

除了 -H 和 -L 以及 -amin 、 -anewer 、 -cmin 、 -cnewer 、 -delete 、 -empty 、-fstype 、 -iname 、 -inum 、 -iregex 、 -ls 、 -maxdepth 、 -mindepth 、 -mmin 、 -path 、 -print0 、 -regex 、 -sparse 和所有与 -B* 诞生时间相关的初选都是对 IEEE Std 1003.1-2001 (“POSIX.1”) 的扩展。

从历史上看, -d -、 -L 和 -x 选项是使用初级 -depth, -follow 和 -xdev 实现的。 这些初选总是被评估为真。 由于它们实际上是在遍历开始之前生效的全局变量,因此某些合法表达式可能会产生意想不到的结果。 一个例子是表达式 -print -o -depth 。 由于 -print 始终评估为 true,因此标准的评估顺序意味着永远不会评估 -depth 。 不是这种情况。

运算符 -or 实现为 -o, 运算符 -and 实现为 -a 。

-exec 和 -ok 主项的历史实现不会替换实用程序名称或实用程序参数中的字符串 “{}” (如果它前面或后面有非空白字符)。 无论它出现在实用程序名称或参数中的哪个位置,此版本都会替换它。

-E 选项的灵感来自等效的 grep(1) 和 sed(1) 选项。

历史

find 命令出现在 Version 1 AT&T UNIX 中。

缺陷

find 使用的特殊字符也是许多 shell 程序的特殊字符。 特别是字符 “* 、” “[ 、” “] 、” “? 、” “( 、” “) 、” “! 、” “\” 和 “;” 可能必须从 shell 中逃脱。

由于没有分隔选项和文件名或文件名和 expression 的分隔符,因此很难指定名为 -xdev 或 ! 的文件。 这些问题由 -f 选项和 getopt(3) “-``-” 结构处理。

-delete primary 无法与导致文件系统树遍历选项更改的其他选项很好地交互。

-mindepth 和 -maxdepth primaries 实际上是全局选项(如上文所述)。 它们可能应该被看起来像选项的选项所取代。

April 18, 2020

FreeBSD 13.1-RELEASE

上一页filetest.1下一页for.1

最后更新于1年前