包虫病

注册

 

发新话题 回复该主题

Linux文件搜索神器find实战 [复制链接]

1#

在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将查找到的文件传递给

分享 转发
TOP
发新话题 回复该主题