find 文件的查找

命令解释

这个命令在linux中是一个比较强大的功能,它会在你指定的文件夹下可以很精确的查找某一个文件。但是它同时有一个缺点,就是会效率会比较低,所以我推荐当你去查找某个文件或者想知道某个命令的路径时,先用whereislocate这两个命令先去试试,如果真查不到,再使用此命令。

find 根据时间来查找文件

命令说明
[root@localhost ~]# find [PATH] [option] [action]
参数:
与时间有关的参数:-atime、-ctime 和 -mtime。我们取其中 mtime 来举例
-mtime  n : n 为数字,意义在 n 天之前的 “当天” 被更改的文件。
-mtime +n : 列出 n 天之前(不包含 n 天本身)被修改过的文件。
-mtime -n : 列出 n 天之内(包含 n 天本身)被修改过的文件。
-newer file : file 为一个存在的文件,列出比 file 还要新的文件。
命令举例
例子一:将过去24小时内有改动的文件都列出来。
[root@localhost ~]# find / -mtime 0
# 0代表当前的时间,所以查找的是现在开始到24小时前被修改过内容的文件都会被列出来。

例子二:寻找 /etc 下面的文件,如果比 /etc/passwd 新就列出来
[root@localhost ~]# find /etc -newer /etc/passwd

Alt text

我们来具体了解下数字的意义:
- ex> find /var -mtime +4:代表查找出大于等于5天前的文件。
- ex> find /var -mtime -4:代表查找出小于或者等于4天内的文件。
- ex> find /var -mtime 4:代表查找出4~5那一天的文件。

find 根据用户和用户组来查找文件

命令说明
参数:
-uid n : n 为数字,这个数字是用户的账号 ID,即 UID,这个 UID 是记录在 /etc/passwd 里面与账号名称对应的数字。
-gid n : n 为数字,这个数字是用户组名的 ID,即 GID,这个 GID 是记录在 /etc/group 中。
-user name : name 为用户账号名称。如 wenjie。
-group name : name 为用户组名称。如users。
-nouser : 寻找文件的所有者不存在 /etc/passwd 的文件。
-nogroup : 需找文件的用户组不存在 /etc/group 的文件。

看到上面的命令说明,你或许会有个疑问。难道还会有所有者、用户组不存在的文件?答案是,有可能的。比如有一个用户在系统下创建了一个文件或目录,然后由于某种原因,这个用户或者用户组被删掉了,系统中就会出现一个无主的文件

命令举例
例子三:查找 /home 下面属于 wenjie 这个用户的文件
[root@localhost ~]# find /home -user wenjie
# 这个命令还蛮常用的,当我们需要知道某个文件夹下查找出某个用户的所有文件。

例子四:查找系统中不属于任何人的文件
[root@localhost ~]# find / -nouser

find 根据文件名称、权限、大小参数来查找文件

命令说明
参数:
-name filename : 查找文件名为 filename 的文件
-size [+-]SIZE : 查找比 SIZE 还要大(+)或小(-)的文件。
                 SIZE 的单位有 c:代表 byte、k:代表 1024bytes、M:代表 MB、G:代表 GB。所以我们要找比50 KB还要大的文件
                 就是:“-size +50k”
-type TYPE     : 查找文件类型为 TYPE 的。类型主要有:
                    * 一般正规文件(f)
                    * 设备文件(b,c)
                    * 目录(d)
                    * 连接文件(l)
                    * socket(s)
                    * FIFO(P)
-perm mode     : 查找文件权限“刚好等于” mode 的文件,举例来说:
                 -rwsr-xr-x 的属性为 4755
-perm -mode    : 查找文件权限“必须要全部包含” mode 的文件,举例来说:
                 我们要查找 -rwxr-xr-- 的数字为 0754
                 如果还有一个文件的权限为 -rwxrwxr-x 的数字为 0775 同样也会列出来
                 因为 -rwxrwxr-x 的权限已经包含 -rwxr-xr-- 的权限了。
-perm +mode    : 查找文件权限“包含任一” mode 的文件,举例来说:
                 我们要查找权限 -rwxr-xr-x 的数字为 0755时,
                 但文件权限 -rw------- 的数字为 0600 文件也会列出来,
                 因为它有 -rw... 的权限。
命令举例
例子五:查出文件名为 passwd 的这个文件
[root@localhost wenjie]# find / -name passwd
# 利用 -name 这个参数来查找

例子六:找出 /var 目录下文件类型为 Socket 的文件名有哪些
[root@localhost wenjie]# find /var -type s
# 这个命令可以查找出比较怪异的文件
# 比如: socket 与 FIFO 文件,可以用 find /var -type s 或 -type p 来找!

例子七:查找文件当中含有 SGID 或 SUID 或 SBIT 的属性
[root@localhost wenjie]# find / -perm +7000
# 所谓的 7000 就是 ---s--s--t,所以只要含有 s 或 t 的就都列出来
# 假如想找含有 ---s--s--t 的所有三个权限,那么得使用 -7000

例子八:查找出系统大1MB的文件
[root@localhost wenjie]# find / -size +1000k

find 其他参数

命令说明
参数:
-exec command: command 为其他命令,-exec 后面可再接其他的命令来处理查找的结果。
-print       : 将结果打印到屏幕上,这个操作是默认操作
命令举例
例子九:将上列找到的文件使用 ls -l 列出来
[root@localhost wenjie]# find / -perm 0400 -exec ls -l {} \;
# 那个 -exec 后面 ls -l 就是额外的命令,命令不支持别名。
# 所以仅能使用 ls -l,不可以使用 ll。

上面这个范例各个参数的意义:
- {} 代表是“由 find 找到的内容”,就是经过 find 查找的内容会被放置到 {} 位置中。
- -exec 一直到 \; 是关键字,代表 find 额外命令的开始( -exec )到结束( \; ),在这中间的就是 find 命令内的额外命令。在上面那个例子中就是 “ls -l {}”
- 因为“ ; ”在 bash 环境下是有特殊意义的,因此利用反斜杠来转义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值