我们都知道在Linux中有着上千条的命令,而常用命令不过百条。
我们也知道在Linux里面“一切皆文件”,那么如何能够快速的找到你想要找的东西就显得尤为重要。
find是Linux里面最重要的命令之一,它有着强大的查询功能。它是在不指定查找目录的情况下是对整个系统进行遍历查找,并执行指定操作。find是直接搜索硬盘,所以在遍历一个大的文件系统是就可能会消耗大量的时间,它类似于Windows下的搜索。
1. find的使用格式: find [PATHNAME][option][action]
我们知道 PATHNAME 是 find命令查找的路径。例如 . 代表当前目录, / 代表根目录,当然我们也可以指定路径如 /tmp
——>a.按类型查找
看一下执行结果:
查找文件:
查找目录:
——>b.按名字查找
如果查找出来的文件太多,不好显示怎么办?Linux也为我们提供了可改的输出模式。例如:
-print :将查找到的匹配的文件输出到标准输出
find /home -type f -print
-exec :将查找到的文件进行额外的动作
find /home/qiao/桌面 -name “1.txt” -exec rm {} \; ——> 意思即为找到1.txt之后删除它
• {}代表的是find做找到的内容,即find的结果会被放到{}的位置中;
• -exec 到 \; 是关键字代表find额外动作的开始(-exec)到(\;)结束,这中间的就是find指令内的额外动作,在上面例子中就是【 rm {} 】;
• \ 为转义字符
find还有好多其他的参数,总结如下:
-name 按照⽂件名查找⽂件。
-perm 按照⽂件权限来查找⽂件。
-prune 使⽤这⼀选项可以使find命令不在当前指定的目录中查找,如果同时使⽤-depth选项,那么-prune将被find命令忽略。
-user 按照⽂件属主来查找⽂件。
-group 按照⽂件所属的组来查找⽂件。
-mtime -n +n 按照⽂件的更改时间来查找⽂件, - n表⽰⽂件更改时间距现在n天以内, + n表⽰⽂件更改时间距现在n天以前。
ps:find命令还有-atime和-ctime 选项,但它们都和-m time选项相同。
-nogroup 查找⽆有效所属组的⽂件,即该⽂件所属的组在/etc/groups中不存在。
-nouser 查找⽆有效属主的⽂件,即该⽂件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间⽐⽂件file1新但⽐⽂件file2旧的⽂件。
-type 查找某⼀类型的⽂件,例如:
b - 块设备⽂件。
d - 目录。
c - 字符设备⽂件。
p - 管道⽂件。
l - 符号链接⽂件。
f - 普通⽂件。
-size n: [c] 查找⽂件⻓度为n块的⽂件,带有c时表⽰⽂件⻓度以字节计。
-depth:在查找⽂件时,⾸先查找当前目录中的⽂件,然后再在其⼦目录中查找。
-fstype:查找位于某⼀类型⽂件系统中的⽂件,这些⽂件系统类型通常可以在配置⽂件/etc/fstab中找到,该配置⽂件中包含了本系统中有关⽂件系统的信息。
-mount:在查找⽂件时不跨越⽂件系统mount点。
-follow:如果find命令遇到符号链接⽂件,就跟踪⾄链接所指向的⽂件。
-cpio:对匹配的⽂件使⽤cpio命令,将这些⽂件备份到磁带设备。