Linux find 强大的文件查找工具

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

find的基本语法格式:

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

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

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

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

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

1)文件名

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

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

2)文件的属主、属组

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

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

-uid "UID" : 根据UID查找

-gid "GID" : 根据GID查找

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

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

复制代码

代码如下:

[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 套接字文件

4)文件的大小

-size

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

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

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

5)文件修改时间

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

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

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

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

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

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

6)文件权限

-perm [+|-] MODE

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

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

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

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 {}

本文出自 “技术之路---桀” 博客

(0)

相关推荐

  • FindAllHudgeFiles怎么使用?大文件查找工具使用介绍

    每天使用电脑,很多小伙伴发现自己的磁盘空间不知不觉就变小了.有时候可能是因为我们下载了某些大文件,用完之后忘记了删除:有些时候可能是一些无用的更新.缓存文件等.尤其是C盘的空间,一旦没占用过多,还会影 ...

  • 苹果电脑怎么删除重复照片(重复文件查找工具哪种最好)

    电脑用多了文件自然就多了,重复文件也多了,浪费了很多磁盘空间,特别是重复的视频文件更是浪费空间的大户.导致Mac越来越慢,那么如何在macOS上查找并删除重复文件,就成了人们关注的问题!一般没有安装第 ...

  • WinRAR支持文件查找功能吗

    在查找文件时,通常使用Windows提供的文件搜索功能,但是如果要搜索的文件包含在压缩包中,Windows就无能为力了。实际上,WinRar提供了更加强大的文件查找功能。WinRar自带资源浏览器功能 ...

  • Linux下使用Shell文本处理工具集锦

    Linux下的操作习惯不像windows一样可以有窗口进行操作,它是有很多不同的命令组成的,本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uni ...

  • Linux系统下使用ctags查找源码的方法

    太多的文件导致我们无法去定位一个函数的实现或者一个宏定义的位置。显然对于源码的阅读和个人的学习都是非常不利的。多么希望有一个软件能够输入命令就能够精确的定位函数的位置。是的,现在有这么一个工具:cta ...

  • Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可 ...

  • DiffSync多文件同步工具使用图文教程

    DiffSync是一个文件差异同步工具,它功能强大,可以根据文件的大小,创建时间,修改时间,访问时间,文件属性等,进行对比,根据对比结果,进行差异同步。特有的高性能算法,让文件对比,变得如此快速。超快 ...

  • Linux系统中的文件类型及文件扩展名详解

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  • Linux系统中fstab文件丢失的恢复方法

    /etc/fstab配置文件决定了Linux系统在启动后如何加载各分区,若分区无法挂载,系统也将无法成功启动,启动时将会出现如下错误信息 /etc/fstab文件丢失的解决办法 1. 使用进入急救模式 ...