Number One-find 命令

来源:互联网 发布:淘宝steam充值卡知乎 编辑:程序博客网 时间:2024/06/05 14:43

linux中理论‘一切介文件’。

1、find与locate 相比较:

locate,

1.模糊查找

2.查找是根据数据全系统文件数据库进行的

3.速度较快

4.Update, 用于手动生成数据库

find:

1.精确查找,实时查找

2.支持众多的查找标准

3.遍历指定目录中的所有文件已完成查找

2.命令格式

find  路径  标准 执行动作

路径:默认为当前目录

标准:默认指定目录下的所有文件

执行动作:默认显示到屏幕上


3.匹配标准

-name "filename":对文件名做精准匹配

文件名通配符:

*:任意长度的任意字符

-iname "filename":对文件名不做大小写匹配

-user "name" :根据属主查找

-group "groupname":根据属组查找

-nouser;查找无效属主文件

-nogroup:查找无效属组文件

-not username:查找不属于属主的文件

-not groupname:查找不属于属组的文件

-type
f:普通
d;目录
b;块文件
c;character  字符设备文件
l;链接文件
p;pipe 管道文件
-size:文件大小


组合条件;
-a  且
-o  或
-not   非
时间戳
-mtime  修改时间
-ctime  改变时间
-atime  访问时间--单位天
[+|-]  +:表示时间之前的
-:表示时间之内的
-mmin   单位 分钟
-cmin
-amin
find ./ -amin -4  四分钟内访问过的文件

-perm MODE  权限查找  -- 精确匹配,才符合条件
-MODE  文件权限能完全包含次MODE时显示
/MODE  任意一位权限匹配即可

-perm /644
-perm -644



运作
-print :显示
-ls:类似 ls -l 的形式显示每一个文件的详细
-ok COMMMAND {} \;        -----每次操作需用户确认;
-exec COMMAND {} \;

find ./ -perm -006 -exec chmod 0-w {} \;    标准写法

find ./ -perm -020 -exec mv {} {}.new \;      引用文件名 必须使用{}

find ./ -name "*.sh"  -a -perm -111 -exec chomd 0-x {} \;  查找文件名为.sh并且其他用户拥有可执行文件 之后把其他用户可执行权限删除

练习:
1.查找/var 目录下属主为root并且属组为mail的所有文件;
find /var -user root -a -group mail 
2.查找/usr 目录下不属于root,bin,或student 的文件;
find /usr  -not -user root -a -not -user bin -a -not -user student 
find /user -not \(-user root -o -user bin  -o -user -student \)

3.查找/etc 目录下最近一周内内容修改且不属于root及student用户的文件;
find /etc -mtime -7 -a -not -user root -a -not -user student 
find /etc -mtime -7 -a -not \( -user root -o -user student \)

4.查找当前系统上没有属主或属组且最近1天内层被访问过的文件,并将其属主属组修改为root
find / -nouser -a -nogroup -a -ctime -1 -exec chown root:root {} \;

5.查找/etc目录下大于1M的文件,并将起文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M -exec basename {} \;  >> /tmp /

6.查找/etc 目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not  -perm  /222 -a -ls 




0 0