在Linux系统使用中,作为一个管理员,我希望能查找系统中所有的大小超过M文件,查看近7天系统中哪些文件被修改过,找出所有子目录中的可执行文件,这些任务需求find命令都可以轻松胜任。
在Linux系统文件中常用的属性可以分为以下内容:名称、大小、权限、属主、修改时间、访问时间等,find命令可以按照指定的属性为条件进行查找。
废话不多,直接开干,下边进入案例实战。
案例实战
(一)按文件名称查找
按照文件名称查找是find最常见的用法,需要注意的是,搜索的文件名必须完全匹配,才能找到对应的文件。
1.查找当前目录下所有go文件
$find.-name"*.go"
2.在etc目录下,查找大写字母开头的txt文件
$find/etc-name"[A-Z]*.txt"-print
3.在当前目录下查找不是out开头的txt文件
$find.-name"out*"-prune-o-name"*.txt"-print
4.在当前目录除git子目录外查找txt文件
$find.-path"./git"-prune-o-name"*.txt"-print
5.找出某个文件的所有硬链接,ls命令-i选项可以查看文件的inode号
$ls-i1.txt.txt$find.-num
搜索文件时使用-iname参数可以忽略文件名称大小写
(二)按文件类型查找
1.在当前目录下,查找软连接文件
$find.-typel-print
2.在当前目录下,查找log结尾的普通文件,f表示普通文件类型
$find.-typef-name"*.log"
(三)按文件大小查找
1.查找小于64k的文件
$find.-size-64k-print
2.查找大小超过M的文件
$find.-size+M-typef-print
(四)按时间查找
1.查找2天内被修改过的文件
$find.-mtime-2-typef-print
2.查找2天前被更改过的文件,-mtime表示内容修改时间
$find.-mtime+2-typef-print
3.查找一天内被访问的文件,-atime表示访问时间
$find.-atime-1-typef-print
4.查找一天内状态被改变的文件,-ctime表示元数据被变化时间
$find.-ctime-1-typef-print
5.查找比chopin.txt新的文件
$find.-newer"chopin.txt"-typef-print$find.!-newer"chopin.txt"-typef-print#旧
(五)根据权限查找
1.查找当前目录权限为的文件
$find.-typef-perm
2.查找etc目录下至少有一个用户有写权限的文件
$find/etc-typef-perm/
3.查找etc目录下所有用户都有执行权限的文件
$find/etc-perm--ls
(六)组合条件
1.查找当前目录下属于chopin用户的普通文件,-a可以省略
$find.-typef-a-userchopin-print
2.查找当前目录下大于2M或2天前被修过的文件
$find.-size+2M-o-mtime+2-print
3.查找当前目录下不是普通文件
$find.-not-typef$find.!-typef
4.查找非空文件
$find.!-empty
(七)处理动作
find根据上述各种条件查找后,支持执行相关的处理动作,可以让我们的更方便和灵活,而不只是打印出来
1.-print默认为打印,可省略
$find.-name"*.log"-print$find.-name"*.log"#等价
2.-ls以ls长文件的格式形式输出
$find.-name"*.txt"-ls-rw-r--r--1rootroot16Jan:20./a.txt-rw-r--r--1rootrootJan:06./T.txt4-rw-r--r--1rootroot27Jan:28./1.txt
3.-delete删除查找到的文件
$find.-size+M-delete
4.-exec将查找到的文件传递给