面试官:怎么查找/etc目录下大于1M的文件?_搜索

介绍

find命令应该是Linux下进行搜索最常用的一个命令了,功能强大,可以按照各种条件来搜索。

怎么查找/etc目录下大于1M的文件?

find

下面我们来看具体的语法格式

find [路径] [选项] [操作]

选项

含义

-name

根据文件名进行查找

-perm

根据文件权限进行查找

-prune

排除 查找目录

-user

根据文件属主查找

-group

根据文件属组查找

-mtime -n | +n

根据文件更改时间查找

-nogroup

查找无有效数组的文件

-nouser

查找无有效属主的文件

-newer file1 ! file2

查找更新时间比file1新但比file2旧的文件

-type

按照文件类型查找

-size -n +n

按文件大小查找

-mindepth n

从n级子目录开始搜索

-maxdepth n

最后搜索到n级子目录

常见选项

-type选项
搜索当前目录下的文件

find .

搜索当前目录下的链接文件

find .

类型

解释

f

文件

d

目录

c

字符设备文件

b

块设备文件

l

链接文件

p

管道文件

-size选项

类型

解释

-n

大小小于n的文件

+n

大小大于n的文件

n

大小等于n的文件

查找/etc目录下小于10000字节的文件

find

查找/etc目录下大于1M的文件

find

-mtime选项

类型

解释

-n

n天以内修改的文件

+n

n天以外修改的文件

n

正好n天修改的文件

查找etc目录下5天之内修改且以conf结尾的文件

find /etc -mtime -5 -name '*.conf'

查找etc目录下10天之前修改且属主为root的文件

find

-mmin选项

类型

解释

-n

n分钟以内修改的文件

+n

n分钟以外修改的文件

查找/etc目录下30分钟之前修改的文件

find

查找/etc目录下30分钟之内修改的目录

find

-mindepth n 选项
表示从n级子目录开始搜索

在/etc下的3级子目录开始搜索

find

-maxdepth n 选项
表示最多搜索到n级子目录

查找当前文件夹下的普通文件

find .

了解选项

操作

-print 打印输出(默认输出,不加也行)

-exec 对搜索到的文件执行特定的操作,格式为-exec ‘command’ {} ;

搜索/etc下的文件(非目录),文件名以conf结尾,且大于10k,然后将其删除

find /etc/ -type f -name '*.conf' -size +10k -exec rm -f {} \;

将/var/log目录下以log结尾的文件,且更改时间在7天以上的删除

find /var/log/ -name '*.log' -mtime +7 -exec rm -rf {} \;

搜索/etc下的文件(非目录),文件名以conf结尾,且大于10k,将其复制到/root/conf目录下

find /etc/ -type f  -name '*.conf' -size +10k exec cp  {} /root/conf/ \;

逻辑运算符

符号

含义

-a


-o


-not

!

-ok 和exec功能一样,只是每次操作都会给用户提示
查找当前目录下,属主不是hdfs的所有文件

find . -not -user hdfs | find . !

查找当前目录下,属主属于hdfs,且大小大于300字节的文件

find .

查找当前目录下属主为hdfs或者以xml结尾的普通文件

find . -type f -a \(-user hdfs -o -name '*.xml'\)

参考博客