linux中的find命令

简介

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

选项

选项说明
-amin<分钟>查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart从本日开始计算时间;
-depth从指定目录下最深层的子目录开始查找;
-expty寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>假设find指令的回传值为True,就执行该指令;
-false将find指令的回传值皆设为False;
-fls<列表文件>此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow排除符号连接;
-fprint<列表文件>此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>只寻找该文件系统类型下的文件或目录
-gid<群组识别码>查找符合指定之群组识别码的文件或目录;
-group<群组名称>查找符合指定之群组名称的文件或目录;
-help或- - help:在线帮助;
-ilname<范本样式>此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>指定字符串作为寻找符号连接的范本样式;
-maxdepth<目录层级>设置最大目录层级;
-mindepth<目录层级>设置最小目录层级;
-mmin<分钟>查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount此参数的效果和指定“-xdev”相同;
-mtime<24小时数>查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup找出不属于本地主机群组识别码的文件或目录;
-noleaf不去考虑目录至少需拥有两个硬连接存在;
-nouser找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>指定字符串作为寻找目录的范本样式;
-perm<权限数值>查找符合指定的权限数值的文件或目录;
-print假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>查找符合指定的文件大小的文件;
-true将find指令的回传值皆设为True;
-typ<文件类型>只寻找符合指定的文件类型的文件;
-uid<用户识别码>查找符合指定的用户识别码的文件或目录;
-used<日数>查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>查找符和指定的拥有者名称的文件或目录;
-version或——version显示版本信息;
-xdev将范围局限在先行的文件系统中
-xtype<文件类型>此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
文件类型
基于文件类型搜索
find . -type 类型参数 

类型参数列表:
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo

三种时间戳

UNIX/Linux文件系统每个文件都有三种时间戳:

访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

例子

  find / -amin -10 # 查找在系统中最后10分钟访问的文件
  find / -atime -2 # 查找在系统中最后48小时访问的文件
  find / -empty # 查找在系统中为空的文件或者文件夹
  find / -group cat # 查找在系统中属于 groupcat的文件
  find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
  find / -mtime -1 #查找在系统中最后24小时里修改过的文件
  find / -nouser #查找在系统中属于作废用户的文件
  find / -user fred #查找在系统中属于FRED这个用户的文件

【例1】查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中

find . -type f -name "*.txt" -exec cat {} \;> all.txt

【例2】找出当前目录下所有root的文件,并把所有权更改为用户tom

find .-type f -user root -exec chown tom {} \;

【例3】将/home/tong/test 目录下大于100K的文件转移到/tmp目录:

find /home/tong/test -type f -szie +100k |xargs -i mv {} /tmp/

【例4】所有子目录的数量:

 [root@localhost ~]# find /etc/ -type d | wc -l

【例5】查找home目录下的所有空文件

$ find ~ -empty

【例6】查找10天内未被修改的文件并删除命令:

find . -ctime +30 -name "*.*" -exec rm -Rf {} \;

【例7】 查1天之内被存取过的文件

find /home     -atime -1                 

【例8】查找在系统中最后24小时里修改过的文件

find     /    -mtime    -1 

【例9】 列出文件或目录被改动过之后,在2日内被存取过的文件或目录

find    /home    -used    -2                   

【例10】 从第2层开始查

find    /home    -name tmp.txt    -mindepth    3  
find命令Linux系统一个非常常用的命令,该命令可以查找文件和目录,并根据不同的条件进行过滤。其基本语法格式如下: ```shell find [path] [option] [expression] ``` 其,path表示要查找的路径,可以是相对路径或绝对路径;option表示查找时的一些选项,可以用来指定查找深度、时间、权限等条件;expression表示要查找的条件,可以是文件名、文件类型、文件大小等。 下面介绍几个常用的find命令选项和表达式: 1. -name:根据文件名进行查找。 ```shell find /home -name "test.txt" # 在/home下查找文件名为test.txt的文件 ``` 2. -type:根据文件类型进行查找。 ```shell find /home -type f # 在/home下查找普通文件 find /home -type d # 在/home下查找目录 ``` 3. -mtime:根据文件修改时间进行查找。 ```shell find /home -mtime +7 # 查找/home目录下7天前修改的文件 find /home -mtime -7 # 查找/home目录下7天内修改的文件 ``` 4. -size:根据文件大小进行查找。 ```shell find /home -size +1M # 查找/home目录下大小大于1MB的文件 find /home -size -1M # 查找/home目录下大小小于1MB的文件 ``` 5. -user:根据文件所有者进行查找。 ```shell find /home -user alice # 查找/home目录下所有者为alice的文件 ``` 6. -perm:根据文件权限进行查找。 ```shell find /home -perm 644 # 查找/home目录下权限为644的文件 ``` 7. -exec:对查找到的文件进行操作。 ```shell find /home -name "test.txt" -exec rm {} \; # 查找/home目录下名为test.txt的文件并删除 ``` 以上仅是find命令的一些常用选项和表达式,实际使用还可以根据具体需求进行更多的定制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值