find命令通过丰富参数实现精准文件搜索,支持按名称、类型、大小、时间、权限、所有者等条件递归查找,结合通配符可高效模糊匹配,利用-atime、-mtime、-ctime区分访问、修改与状态变更时间以适配不同场景,使用-exec、-ok及xargs安全批量处理结果,通过-perm、-user等参数进阶定位特定权限或归属文件,并可用-maxdepth、-mindepth和-prune优化搜索范围与性能。

find
find
find [路径] [表达式]
首先,路径是可选的,如果不指定,默认会在当前目录进行搜索。表达式部分,才是
find
按名称搜索:
-name "文件名"
*.txt
-iname "文件名"
-name
按类型搜索:
-type c
c
f
d
l
b
c
p
s
find . -type d -name "logs"
logs
按大小搜索:
-size n[cwbkMG]
n
+n
n
-n
n
c
w
b
k
M
G
find . -size +10M -type f
按时间搜索: 这是
find
-atime n
n
-mtime n
n
-ctime n
n
n
n
+n
n
-n
n
-amin
-mmin
-cmin
find . -mtime -7 -type f
按用户/组搜索:
-user 用户名
-group 组名
-uid 用户ID
-gid 组ID
按权限搜索:
-perm 权限模式
n
-n
n
/n
n
find . -perm 644 -type f
rw-r--r--
find . -perm -u=r,o=w
执行命令:
-exec 命令 {} \;{}find
\;
-ok 命令 {} \;-exec
逻辑操作符:
-a
-a
-o
!
()
\( -name "*.txt" -o -name "*.log" \)
这些参数可以组合使用,构建出极其复杂的搜索逻辑。实际操作中,往往需要多尝试几次,才能找到最符合需求的组合。

通配符在
find
-name
-iname
最常用的通配符有:
*
?
[]
[abc]
[0-9]
[a-z]
举几个例子来说明:
查找所有以 .log
find /var/log -name "*.log"
syslog.log
auth.log
kern.log
ERROR.LOG
find /var/log -iname "*.log"
查找文件名是三个字符,且以 tmp
find . -name "tmp?"
tmp1
tmpA
tmp
tmp12
查找文件名包含数字的文件,例如 file1.txt
file2.txt
find . -name "file[0-9].txt"
find . -name "file[0-9]*.txt"
file1.txt
file10.txt
在使用通配符时,一个常见的陷阱是 shell 自身也会解释通配符。为了确保
find
find . -name "*.txt"
find

find
atime
mtime
ctime
-atime
find /var/www/html -atime +365 -type f
atime
noatime
relatime
atime
mtime
atime
mtime
ctime
-mtime
find /home/user/documents -mtime -1 -type f
find /var/log -mtime +30 -name "*.log" -delete
-delete
-ctime
mtime
ctime
ctime
mtime
find /etc -ctime -7 -type f
ctime
ctime
简而言之,当你想知道文件内容何时被动过,看
mtime
atime
ctime
-mtime

当
find
-exec
-ok
find
1. -exec 命令 {} \;
{}find
\;
示例:删除所有 .bak
find . -name "*.bak" -type f -exec rm {} \;.bak
rm
示例:复制找到的文件到另一个目录
find . -name "*.txt" -type f -exec cp {} /tmp/backup/ \;.txt
/tmp/backup/
安全考量:
rm
mv
find . -name "*.bak"
-exec
rm
rm -rf
{}2. -ok 命令 {} \;
-exec
find . -name "*.tmp" -type f -ok rm {} \;.tmp
rm ./somefile.tmp? y/n/
y
安全考量:
3. 结合 xargs
xargs
-exec
find . -name "*.log" -print0 | xargs -0 rm
find ... -print0
-print0
find
xargs -0
xargs
-0
安全考量:
-p
xargs
-p
--interactive
-ok
find . -name "*.log" -print0 | xargs -0 -p rm
-n
xargs -n N
在实际操作中,我通常会先用
find ... -print
find ... -print0 | xargs -0 echo
echo
rm
mv
cp
查找特定权限或用户文件是系统管理中常见的任务,例如审计系统安全、清理僵尸文件或识别权限配置错误。
find
1. 查找特定权限的文件 (-perm
-perm
精确匹配 (-perm 模式
find . -perm 644 -type f
rw-r--r--
644
755
644
至少包含 (-perm -模式
find . -perm -644 -type f
rw-r--r--
755
644
600
任意一个 (-perm /模式
find . -perm /222 -type f
600
020
符号模式 (-perm u=rwx,g=rx,o=x
find . -perm -u=rwx,g=rx,o=x
u
G
o
a
+
-
=
find . -perm -u+w -type f
2. 查找特定用户或组的文件 (-user
-group
-uid
-gid
按用户名或组名:
find /home -user jane -type f
/home
jane
find /var/www -group developers -type d
/var/www
developers
按用户ID或组ID:
find / -uid 0 -type f
root
find / -gid 1000 -type f
1000
进阶组合技巧:
查找不属于任何有效用户的文件(孤儿文件):
find / -nouser
find / -nogroup
查找具有特定权限且属于特定用户的文件:
find /var/www -user apache -perm -o+w -type f
/var/www
apache
这些组合参数的灵活运用,能让你像一个侦探一样,在复杂的文件系统中迅速定位到目标,无论是为了安全审计、系统维护还是日常开发。
在大型文件系统或包含大量文件的目录中执行
find
find
1. 限制搜索深度 (-maxdepth
-mindepth
-maxdepth 级别
find
1
find . -maxdepth 1 -name "*.conf"
.conf
-mindepth 级别
find
1
find . -mindepth 2 -name "*.log"
.log
2. 排除特定目录 (-prune
-prune
以上就是Linux搜索文件命令find常用参数的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号