Linux命令集-find

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

##语法

[root@study ~]# find [PATH] [option] [action]

##参数

1. 与时间有关的选项:共有-atime, -ctime与-mtime,以-mtime说明
    -mtime n : n为数字,意义为在n天之前的"一天之内"被更改内容的文件;
    -mtime +n : 列出n天之前(不含n天本身)被更改过内容的文件名;
    -mtime -n : 列出在n天之内(含n天本身)被更动过内容的文件名。
    -newer file : file为一个存在的文件,列出比file还要新的文件名

2. 与使用者或群组名称有关的参数:
    -uid n : n为数字,这个数字是使用者的账号ID,亦即UID,这个UID是记录在/etc/passwd里面与账号名称对应的数字。
    -gid n : n为数字,这个数字是群组名称的ID,亦即GID,这个GID记录在/etc/group,
    -user name : name为使用者账号,例如:tucci
    -group name : name为群组名称,如果users
    -nouser : 寻找文件的拥有者不存在/etc/passwd的文件
    -nogroup : 寻找文件的拥有群组不存在于/etc/group的文件
                当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
                这是可能的!在这个时候,就可以用-nouser与-nogroup搜寻。

3. 与文件权限及名称有关的参数
    -name filename : 搜索文件名称为filename的文件;
    -size [+-] size : 搜寻比SIZE还要大(+)或小(-)的文件。这个SIZE的规格有:
                            c : 代表Byte,k : 代表 1024Bytes。所以,要找比50KB还要大的文件,就是"-size +50k"
    -type TYPE : 搜寻文件的类型为TYPE的,类型主要有 : 一般正规文件(f), 设备文件(b, c), 
                        目录(d), 链接文件(l), socket(s), 及FIFO(p)等属性。
    -perm mode : 搜寻文件权限 "刚好等于"mode的文件,这个mode为类似chmod的属性值,举例来说,
                        -rwsr-xr-x的属性为4755
    -perm -mode : 搜寻文件权限"必须要全部囊括mode的权限"的文件,举例来说,我们要搜寻 
                        -rwxr--r--, 亦即0774的文件,使用 -perm -0744,当一个文件的权限为-rwsr-xr-x,
                        亦即4755时,也会被列出来,因为-rwsr-xr-x的属性以及囊括了-rwxr-xr-x的属性了。
    -perm /mode : 搜寻文件权限"包含任一mode的权限"的文件,举例来说,我们搜寻-rwxr-xr-x,亦即
                        -perm /755时,但一个文件属性为 -rw-------也会被列出来,因为他有-rw-------
                        的属性存在

4. 额外可进行的动作:
    -exec command : command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。
    -print                : 将结果打印到屏幕上,这个动作是默认动作

##范例

范例一:将过去系统上面24小时内有更动过内容(mtime)的文件列出

[root@study ~]# find / -mtime 0
# 那个0是重点!0代表目前的时间,所以现在开始到24小时前,
# 有变动过内容的文件都会被列出来!如果是三天前24小时内?
# find / -mtime 3  变动过的文件都被列出的意思

范例二:寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出

[root@study ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的

输入图片说明

从上面我们可以清楚的知道:

  • +4代表大于等于5天前的文件名:ex > find /var -mtime +4
  • -4代表小于等于4天内的文件名:ex > find /var -mtime -4
  • 4则是代表4-5那一天的文件名:ex > find /var -mtime 4

范例三:搜寻/home下面属于tucci的文件

[root@study ~]# find /home -user tucci
# 这个东西也很有用~当我们要找出任何一个使用者在系统当中的所有文件时。
# 就可以利用这个指令将属于某个使用者的所有文件找出来

范例四:搜寻系统中不属于任何人的文件

[root@study ~]# find / -nouser
# 通过这个指令,可以轻易的就找出那些不太正常的文件。如果有找到不属于系统任何人的文件时,
# 不要太紧张,那有时候是正常的~尤其是你曾经以源代码自行编译软件时。

范例五:找出文件名为passwd这个文件

[root@study ~]# find / -name passwd

范例六:找出文件名包含了passwd这个关键字的文件

[root@study ~]# find / -name "*passwd*"
# 利用这个-name可以搜寻文件名,默认是完整文件名,如果想要找关键字,
# 可以使用类似 * 的任意字符来处理

范例七:找出/run目录下,文件类型为Socket的文件名有哪些

[root@study ~]# find /run -type s
# 这个-type的属性也很有帮助,尤其是要找出哪些怪异的文件
# 例如socket与FIFO文件,可以用find /run -type p 或 -type s来找。

范例八:搜寻文件当中含有SGID或SUID或SBIT的属性

[root@study ~]# find / -perm /7000
# 所谓的7000就是---s--s--t,那么只要含有s或t的就列出,所以当然要使用/7000,
# 使用-7000表示要同时含有---s--s--t的所有三个权限,而只需要一个,就是/7000

范例九:将上个范例找到的文件使用ls -l列出来

[root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
# 注意到,那个-exec后面的ls -l就是额外的指令,指令不支持命令别名
# 所有仅能使用ls -l不可以使用ll。

输入图片说明

范例中特殊的地方有{}以及;还有-exec这个关键字,这些东西的意义为:

  • {}代表的是"由find找到的内容",如上图所示,find的结果会被放置到{}位置上中;
  • -exec一直到;是关键字,代表find额外动作的开始(-exec)到结束(;),在这中间的就是find指令的额外动作。
  • 因为";"在bash环境下是有特殊意义的,因此用反斜线来跳脱。

范例十:找出系统中,大于1MB的文件

[root@study ~]# find / -size +1M

转载于:https://my.oschina.net/tucci/blog/1083440

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值