Liunx 文件查询神器

再来谈一谈怎么查找文件。在Linux下面也有相当优异的查找命令。通常find不很常用的,因为速度慢!通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来查找。为什么呢?因为whereis与locate是利用数据库来查找数据,所以相当快速,而且并没有实际查询硬盘,比较节省时间。
引用来自: 鸟哥. “鸟哥的Linux私房菜 基础学习篇(第三版)。” Apple Books.

有趣的博客地址 20ID的博客

find语法

find [PATH] [option] [action]

参数:

与时间有关的参数:共有 –atime-ctime-mtime,下面以 -mtime 说明:

  • -mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更改过的文件;
  • -mtime +n :列出在 n 天之前(不含 n 天本身)被更改过的文件名;
  • -mtime -n :列出在 n 天之内(含 n 天本身)被更改过的文件名;
  • -newer file :file 为一个存在的文件,列出比 file 还要新的文件名。

范例:

1. 将过去系统上面 24 小时内有改动(mtime)的文件列出

find / -mtime 0

那个 0 是重点! 0 代表目前的时间,所以,从现在开始到 24 小时前,有改动过内容的文件都会被列出来!

2. 3天前的 24 小时内有改动(mtime)的文件列出

find / -mtime 3 

3. 寻找 /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出

find /etc -newer /etc/passwd

-newer 用在分辨两个文件之间的新旧关系是很有用的!

4. 找出“4天内被改动过的文件名”呢?

find /var -mtime -4

5. 那如果是“4 天前的那一天”呢?

find/var -mtime 4

有没有加上“+, -”差别很大。

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

与用户或用户组名有关的参数:

  • -uid n :n 为数字,这个数字是用户的账号 ID,即 UID,这个 UID 是记录在/etc/passwd 里面与账号名称对应的数字。
  • -gid n :n 为数字,这个数字是用户组名的 ID,即 GID,这个 GID 记录在/etc/group中~
  • -user name :name 为用户账号名称。例如 dmtsai。
  • -group name:name 为用户组名,例如 users。
  • -nouser :寻找文件的所有者不存在 /etc/passwd 的人。
  • -nogroup :寻找文件的所有用户组不存在于 /etc/group中的文件。当你自行安装软件时,很可能该软件的属性当中并没有文件所有者,这是可能的,在这个时候,就可以使用 -nouser 与 -nogroup 查找。

范例:

1. 查找 /home 目录下 属于 vbird 的文件

find /home -user vbird

2. 查找 /home 目录下 系统中不属于任何人的文件

find /home -nouser

与文件权限昵称有关的参数:

  • -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--,即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x,即 4755 […]

范例:

1. 查找 /home 目录下 文件名为 government.txt

find /home -name government.txt

2. 找出 /var 目录下文件类型为 Socket 的文件名有哪些

find /var -type s

3. 要找出那些怪异的文件,例如 socketFIFO 文件,可以用

find /var -type p # 或 -type s 来找!

4. 查找文件当中含有 SGIDSUIDSBIT 的属性

find / -perm +7000

所谓的 7000 就是 ---s--s--t,那么只要含有 s 或 t 的就列出,所以当然要使用 +7000,使用 -7000 表示要含有 ---s--s--t 的所有三个权限,因此,就是 +7000 。

5. find 支持通配符,查找文件名包含.log的文件

find / -name "*.log*"

你可能感兴趣的:(Liunx 文件查询神器)