linux 文件搜索软件,Linux 强大的文件查找工具之find

“一切皆文件”是Linux的哲学思想之一, 这条命令可以统计当前linux系统中有多少文件ls -R/|wc -l&建议放在后台执行,因为你的系统文件很多则会消耗很多时间,你可以看见这个结果是庞大的,linux的系统中的文件实在是太多了,怎么样才能快速而且精确的在linux系统找出你想要的文件呢?Linux的find命令提供了很强大的功能,学好find命令的使用,可以给你节省大量花费在找文件的时间。

find的基本语法格式:

find  [查找位置]  [查找标准]  [处理动作]

查找位置:默认为当前目录,可以指定多个目录,多个之间用空格

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

处理动作:显示到标准输出,默认为print

剖析find的查找标准可分为哪些:

1)文件名

-name  "文件名称" :根据文件名查找,支持glob

0b77281699ffd126912f32b5d02952e5.png

-iname "文件名称",根据文件名查找,不区分大小写

8b6f9170227be5205541ad9015875063.png

2)文件的属主、属组

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

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

-uid         "UID"               :根据UID查找

-gid      "GID"                  :根据GID查找

-nouser                           :查找没有属主的文件

-nogroup                         :查找没有属组的文件

6d0ea3b8f3e6514e0ee1b1f7ebe35a4c.png

[root@Redhat6 /]# find / -nouser -nogroup #没有属主,也没有属组

/tmp/user1dir

[root@Redhat6 /]# ls -ld /tmp/user1dir/ #验证查找的文件是否符合要求,文件没有用户表示属主和属组,但会以ID号来表示

drwxrwxr-x 2 500 500 4096 Jul 23 10:36 /tmp/user1dir/

[root@Redhat6 /]# find / -user root -gid 500 #查找用户为root,gid为500

/tmp/user1dir

[root@Redhat6 /]# ls -ld /tmp/user1dir/

drwxrwxr-x 2 root 500 4096 Jul 23 10:36 /tmp/user1dir/

3)文件的类型

-type

f文件

d目录

b块设备

c字符设备

l符合链接文件

p命令管道文件

s套接字文件

1fc6536215d993e23885f7de2008e12f.png

4)文件的大小

-size

#[k|M|G]:#表示数字,匹配的时候为模糊匹配

+#[k|M|G]:+#表示大于,匹配的结果大于#

-#[k|M|G] :-#表示小于,匹配的结果是小于#

7677d58af7a87288ecfa7a695065048a.png

fcfb3e45bed9907a91edef1e9b2e178b.png

5)文件修改时间

-atime   [+|-]#   :访问时间,默认为天,#表示#天的这个时间点,+#表示至少有#天没访问,  -#表示#天之内没访问

-mtime[+|-]#:修改时间,#表示#天的这个时间点没有被修改,+#表示至少有#天没有修改,  -#表示#天之内没有修改

-ctime[+|-]#:改变时间,#表示#天的这个时间点没有被改变,+#表示至少有#天没有被改变,  -#表示#天之内没有被改变

-amin    [+|-]#    :时间为分钟,#表示#分钟的这个时间点没有被访问,+#表示至少有#分钟没有被访问,  -#表示#分钟之内没访问

-mmin  [+|-]#    :时间为分钟,#表示#分钟的这个时间点没有被修改,+#表示至少有#分钟没有被修改,  -#表示#分钟之内没有被修改

-cmin    [+|-]#    :时间为分钟,#表示#分钟的这个时间点没有被改变,+#表示至少有#分钟没有被改变,  -#表示#分钟之内没有被改变

270ff8d8ab100047103e6a32c74f6f78.png

7d30158ff43d2054ebf9823732568f0d.png

6)文件权限

-perm  [+|-] MODE

不带[+|-]表示精确权限匹配,

+表示任何一类用户的任何一位权限匹配

-表示每类用户的每位权限都匹配

02b1335744aa14811b3cc4f3d2c19c15.png

2d6ca74f4d6e040f94f7e188c22ae351.png

527cb05d5510ef99a823a274db47c4ce.png

b5d74b95619e862407c3f72216b7afbd.png

find在查找标准时支持组合查找条件,在使用组合查找条件时要考虑优先级,优先级为顺序为非→与→或,在组合参数是想改变优先级可以用()来提升优先级。

-a    (and)与默认是与

-o    (or)或

-not,!非

find的处理动作可以是:

-print默认为输出

-ls显示查找到的文件的详细信息

-ok   COMMAND \;要确认

-exec    COMMAND  \;     其中COMMAND中有对查找到的文件进行操作时,用{}来替代查找到的     文件,\;表示使用-exec的结束符,是固定格式;使用-exec来出来查找的文件时,还可以通过管道送给xargs命令来解决,xargs在执行命令时,如果有对文件进行操作则用-i选项,{}也表示要操作的文件。

1、查找/var目录下属主为root并且属组为mail的所有文件;

find /var -user root -group mail

2、查找/usr目录下不属于root,bin,或student的文件;

find /usr -not \( -user root -o -user bin -o -user student \)

find /usr -not -user root -a -not -user bin -a -not -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 -o -nogroup \) -a -atime -1 -exec chown root:root {} \;

5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;

find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \;

find /etc -size +1M >> /tmp/etc.largefiles

6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;

find /etc -not -perm +222

7、删除类型不是目录,而且没有属主的文件;

find / -not -type d -a -nouser -exec rm -f {} \;

find / -not -type d -a -nouser | xargs -i rm -f {}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值