find 命令常见用法

查找文件:
find ./ -type f

查找目录
find ./ -type d

查找名字为test的文件或目录
find ./ -name test

查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录)
find ./ -regex .so..gz

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)
find ./ -type d -print -exec ls {} ;

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)
find ./ -type d -ok ls {} ;

查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)
find ./ -type d -exec ls {} +

查找文件名匹配*.c的文件
find ./ -name *.c

打印test文件名后,打印test文件的内容
find ./ -name test -print -exec cat {} ;

不打印test文件名,只打印test文件的内容
find ./ -name test -exec cat {} ;

查找文件更新日时在距现在时刻二天以内的文件
find ./ -mtime -2

查找文件更新日时在距现在时刻二天以上的文件
find ./ -mtime +2

查找文件更新日时在距现在时刻一天以上二天以内的文件
find ./ -mtime 2

查找文件更新日时在距现在时刻二分以内的文件
find ./ -mmin -2

查找文件更新日时在距现在时刻二分以上的文件
find ./ -mmin +2

查找文件更新日时在距现在时刻一分以上二分以内的文件
find ./ -mmin 2

查找文件更新时间比文件abc的内容更新时间新的文件
find ./ -newer abc

查找文件访问时间比文件abc的内容更新时间新的文件
find ./ -anewer abc

查找空文件或空目录
find ./ -empty

查找空文件并删除
find ./ -empty -type f -print -delete

查找权限为644的文件或目录(需完全符合)
find ./ -perm 664

查找用户/组权限为读写,其他用户权限为读(其他权限不限)的文件或目录
find ./ -perm -664

查找用户有写权限或者组用户有写权限的文件或目录
find ./ -perm /220
find ./ -perm /u+w,g+w
find ./ -perm /u=w,g=w

查找所有者权限有读权限的目录或文件
find ./ -perm -u=r

查找用户组权限有读权限的目录或文件
find ./ -perm -g=r

查找其它用户权限有读权限的目录或文件
find ./ -perm -o=r

查找所有者为lzj的文件或目录
find ./ -user lzj

查找组名为gname的文件或目录
find ./ -group gname

查找文件的用户ID不存在的文件
find ./ -nouser

查找文件的组ID不存在的文件
find ./ -nogroup

查找有执行权限但没有可读权限的文件
find ./ -executable ! -readable

查找文件size小于10个字节的文件或目录
find ./ -size -10c

查找文件size等于10个字节的文件或目录
find ./ -size 10c

查找文件size大于10个字节的文件或目录
find ./ -size +10c

查找文件size小于10k的文件或目录
find ./ -size -10k

查找文件size小于10M的文件或目录
find ./ -size -10M

查找文件size小于10G的文件或目录
find ./ -size -10G

`find` 命令Linux 系统中的一种实时查找工具,通过遍历指定起始路径下文件系统层级结构完成对文件的查找,其常见用法如下: ### 基本语法 ```bash find path -option [ -print ] [ -exec -ok command ] {} \; ``` ### 查找条件及示例 #### 根据文件名查找 使用 `-name` 选项可以根据文件名进行查找,支持通配符。 ```bash # 查找当前目录下所有扩展名为 .txt 的文件 find . -name "*.txt" ``` #### 根据文件从属关系查找 - `-user`:根据文件所有者查找。 ```bash # 查找系统中属于用户 fred 的文件 find / -user fred ``` - `-group`:根据文件所属组查找。 ```bash # 查找系统中属于 groupcat 的文件 find / -group cat ``` - `-uid`:根据用户 ID 查找。 ```bash # 查找系统中用户 ID 为 1000 的用户拥有的文件 find / -uid 1000 ``` - `-gid`:根据组 ID 查找。 - `-nouser`:查找属于作废用户的文件。 ```bash # 查找系统中属于作废用户的文件 find / -nouser ``` - `-nogroup`:查找属于作废组的文件。 #### 根据文件的类型查找 使用 `-type` 选项可以根据文件类型查找,常见的文件类型有 `f`(普通文件)、`d`(目录)、`l`(符号链接)等。 ```bash # 查找当前目录下所有的目录 find . -type d ``` #### 根据文件的大小查找 使用 `-size` 选项可以根据文件大小查找,单位可以是 `k`(千字节)、`M`(兆字节)、`G`(吉字节)等。 ```bash # 查找系统中大小大于 10M 的文件 find / -size +10M ``` #### 根据时间戳查找 - `-atime`:根据文件最后访问时间查找,单位是天。 ```bash # 查找系统中最后 48 小时访问的文件 find / -atime -2 ``` - `-mtime`:根据文件最后修改时间查找,单位是天。 ```bash # 查找系统中最后 24 小时里修改过的文件 find / -mtime -1 ``` - `-ctime`:根据文件状态最后改变时间查找,单位是天。 - `-amin`:根据文件最后访问时间查找,单位是分钟。 ```bash # 查找系统中最后 10 分钟访问的文件 find / -amin -10 ``` - `-mmin`:根据文件最后修改时间查找,单位是分钟。 ```bash # 查找系统中最后 5 分钟里修改过的文件 find / -mmin -5 ``` - `-cmin`:根据文件状态最后改变时间查找,单位是分钟。 #### 根据权限查找 使用 `-perm` 选项可以根据文件权限查找。 ```bash # 查找系统中权限为 777 的文件 find / -perm 777 ``` ### 处理动作 #### 常用选项 - `-print`:默认动作,打印找到的文件路径。 ```bash find . -name "*.txt" -print ``` - `-ls`:以长格式列出找到的文件。 ```bash find . -name "*.txt" -ls ``` - `-delete`:删除找到的文件。 ```bash find . -name "*.log" -delete ``` - `-fls`:将找到的文件信息保存到指定文件中。 ```bash find . -name "*.txt" -fls files.txt ``` - `-ok COMMAND {} \;`:对找到的文件执行指定命令,执行前会询问用户确认。 ```bash find . -name "*.txt" -ok rm {} \; ``` - `-exec COMMAND {} \;`:对找到的文件执行指定命令,不询问用户确认。 ```bash find . -name "*.txt" -exec rm {} \; ``` ### 其他 `find` 命令默认接的命令是 `-print`,它默认以 `\n` 将找到的文件分隔。可以使用 `-print0` 来使用 `\0` 分隔,这样就不会分行了。但要注意,`-print0` 针对的是 `\n` 转 `\0`,如果查找的文件名本身就含有空格,则 `find` 后 `-print0` 仍然会显示空格文件[^4]。 ```bash # 普通的打印 find /tmp/find_learn/ # print0 打印,打印的时候替换 \n 为 \0,连在一起打印 find /tmp/find_learn/ -print0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值