Find指令
它是Linux系统使用中的非常重要的一条指令,它也包含了很多选项。
1.它的指令格式如下:
find pathname -options [-printf -exec -ok ...]
2.指令功能:
用于在文件树中查找文件,并做出相应的处理。
3.指令中的参数:
pathname:表示所要查找的目录路径.例如”.”表示当前目录,”/”表示根目录。
-print:将find找到的文件输出到标准输出。
-exec:对找到的文件执行exec这个参数所指定的shell命令,相应的形式为:-exec command {} \;
将查到的文件进行command操作,”{}”就代替查到的文件,注意”{}”和”\”之间有一个空格。
-ok:和-exec的作用相同,不过-ok更加安全一点,在执行每一个命令前,都会给出提示,让用户来确定是否执行。
参数为-ok :会给出提示,“”
{}
“”代替查找到的文件
参数为-exec:无提示
通过上面介绍,我们也可以这么理解。
find命令就是:
find [查找目录] [查找规则] [查找完后的操作]
4.find的选项
-name 按照文件名查找文件
(1)name根据文件名查找,区分大小写
(2)iname根据文件名查找,不区分大小写
(3)*文件通配符 表示可以统配任意的字符
(4)”?”表示通配任意单个字符
(5)”[]”表示通配括号里面的任意一个字符,注意[]里面的内容会被解析成单个字符
-perm:按照文件权限来查找文件
-prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略
(1)
在当前目录除了code子目录之外的其他子目录内搜索test.c文件
(2)在当前目录及除code和Documents之外的其他子目录中查找test.c文件
(3)只在当前code目录,而不再其子目录中,查找test.c文件
-user username:在code目录下按照文件属主来查找文件
-group groupname:在code目录下按照文件所属的组来查找文件
-nouser: 查找无有效属主的文件,即该文件的属主在/etc/ passwd中不存在
find / -nouser -type f -print
-nogroup: 查找无有效所属组的?文件,即该文件所属的组在/etc/groups中不存在
find / -nogroup -type f -print
为什么会存在不属于任何用户和用户组的文件?因为当你自行安装软件时,很可能软件的属性当中并没有文件所有者或者你将某个用户(用户组)删除了,但是它的文件还在。这是可能的。所以在这时候就可以用着两条指令来查看这些不太正常的文件。
-mtime -n / +n:按照文件的更改时间来查找文件
•
+n 表示从今天起,比n天前的那一天还往前的那段时间所操作过的文件名。(n天前之前)
•
-n 表示从今天起,n天前的那一天到今天这段时间所操作过的文件名(n天前到现在)
•
n 表示从今天起,n天前的那一天操作的文件名(n天前当天)
0就代表当天的时间
find命令还有-atime和-ctime 选项,但它们都和-m time 选项相同
-newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件
-type:查找某一类型的文件
f:普通文件 find pathname -type f
d:目录文件 find pathname -type d
l:链接文件 find pathname -type l
b:表示块设备文件 find pathname -type b
c:表示字符设备文件 find pathname -type c
p:表示管道设备文件 find pathname -type p
s:表示套接字文件 find pathname -type s
-a -o -not (与 或 非)
-a 类似与操作,当全为真时才为真
-o 类似或操作,只要有一个为真就为真,找到的结果是只有有一个成立就找到它
-not 类似非操作,与当前查找的条件相反
-size n[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计
-depth:在查找文件时,首先查找子目录再查找当前目录
在不加-depth的时候,处理顺序是首先查找当前目录,然后查找子目录。加不加-depth参数,会影响结构的输出顺序。
在code目录下查找不为空的文件时,加上-depth就先查找子目录再查找当前目录。
不加-depth就先查找当前目录再查找子目录。
加-mindepth 1表示输出时不输出顶层的当前目录code, 普通默认是包含顶层当前目录的:
-links:按照链接的数目来查找
-gid n:查找系统中文件数字组 ID 为 n的文件
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
-mount:在查找文件时不跨越文件系统mount点
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中