find
find
命令的常见用法有哪些?find
命令的例子。
简介
Linux Find命令是类Unix操作系统中最重要、最常用的命令行实用程序之一。find
命令可以,根据不同的查找条件,来查询匹配不同的文件或目录列表。
find
可用于根据各种条件查找,例如您可以按权限、用户、组、文件类型、日期、大小和其他可能的条件查找文件。
通过本文,我们将以示例的形式分享我们的日常Linux find
命令体验及其使用。
格式
find [path...] [test...] [action...]
path
:find
命令的第一件事,查看每个路径test
:对于遇到的每个文件,find
应用测试条件action
:一旦搜索完成,find
对每个文件执行相应的操作
路径示例:
find /usr/bin
find /
find .
find ~
测试示例:
-name pattern
:包含pattern
的文件名-iname pattern
:包含pattern
的文件名(忽略大小写)-type [df]
:文件类型,d
代表目录,f
代表文件-perm mode
:设置为mode
的文件权限-user userid
:用户为userid
-group groupid
:组为groupid
-size [-+]n[cbkMG]
:大小为 n[字符(字节)、块、千字节、兆字节、吉字节]-empty
:空文件-amin [-+]n
:n 分钟之前访问-anewer file
:file 文件之后访问-atime [-+]n
:n 天之前访问-cmin [-+]n
:n 分钟之前状态改变-cnewer file
:file 文件之后状态改变-ctime [-+]n
:n 天状态之前改变-mmin [-+]n
:n 分钟之前修改-mtime [-+]n
:n 天之前修改-newer file
:file 文件之后修改
-
代表:小于,+
代表:大于
另外对于测试条件而言,可以使用 !
对测试条件求反:
# 显示扩展名不是 jpg 的文件
find ~ -type f \! -name '*.jpg' -print
动作示例:
-print
:路径名写入到标准输出-fprint file
:同-print
,将输出写入到file
中-ls
:显示长目录列表-fls file
:同-ls
,将输出写入到file
中-delete
:删除文件-exec command {} \;
:执行command
,{}
代表匹配的文件名-ok command {} \;
:同-exec
,但是在执行command
之前进行确认
示例
(1)在当前目录查找文件全名为 ‘abc.txt’ 的文件
find . -name abc.txt
点 . 代表当前目录
在 /home
目录查找就是:
find /home -name abc.txt
(2)忽略文件名的大小写
find . -iname abc.txt
可能查找出来的有:abc.txt
、Abc.txt
(3)查找名称为 abc 的文件夹
find / -type d -name abc
-type
的值代表文件类型,可能的值如下所示:
b
:block specialc
:character speciald
:目录f
:普通文件l
:symbolic linkp
:FIFOs
:socket
(4)查找当前目录的所有 Java 文件
find . -type f -name '*.java'
(5)查找权限不是 777 的文件
find / -type f ! -perm 777
感叹号 ! 表示反匹配
(6)查找权限为 777 的文件,并改为 644 文件
find / -type f -perm 0777 -print -exec chmod 644 {} \;
-print
代表匹配的文件打印到命令行中
(7)查找文件并将其删除
find . -type f -name '*.txt' -exec rm -f {} \;
(8)查找所有空文件
find /tmp -type f -empty
(9)查找所有隐藏文件
find /tmp -type f -name '.*'
(10)查找 abc.txt 并且是用户 tom 拥有的文件
find / -user tom -name abc.txt
(11)查找所有过去 50 天内修改过的文件
find / -mtime 50
(12)查找所有过去 50 - 100 天内修改过的文件
find / -mtime +50 -mtime -100
(13)查找所有过去 50 天内访问过的文件
find / -atime 50
(14)找到过去 1 小时之内修改过的文件
find / -cmin -60
-cmin
代表 change 的文件(单位:分钟)-mmin
代表 modified 的文件(单位:分钟)-amin
代表 assessed 的文件(单位:分钟)
(15)找到 50MB 大小的文件
find . -size 50M
(16)找到文件位于 50MB - 100MB
find . -size +50M -size -100M
exec 命令简介
上述有几个例子,在搜索到指定文件后,使用 exec
命令对这些文件做了一些其它操作:比如删除、修改权限等操作。以下面命令为例:
find . -type f -name '*.txt' -exec rm -f '{}' \;
exec
命令,可以对与find
表达式匹配的每个对象执行命令{}
是find
搜索到的文件的占位符exec
命令以;
结束,但是呢需要使用\
来对其进行转义,以防止;
被转义{}
最好使用单引号括起来:'{}'
,以避免由于文件的名字格式等问题出现错误
参考
扫描下面二维码,在手机端阅读: