Linux下的文件查找类命令(转载)

如何快速有效的定位文件系统内所需要查找的文件呢?Linux为我们提供了一些文件查找类的命令,我们需要掌握以下几个命令:

http://blog.csdn.net/sailor201211/article/details/53290470

which

命令which会依照用户的PATH环境变量查找一个外部命令对应的可执行文件的路径。如:

$ which gcc
/usr/bin/gcc

whereis

和which命令相比,whereis命令则可以定位一个外部命令的二进制文件、源代码文件及用户手册文档。如:

$ whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/bin/X11/gcc /usr/share/man/man1/gcc.1.gz

locate

上述两条命令(which和whereis)仅用于查找安装到系统内的外部命令所对应的文件,而对于一般的用户文件如个人的文档、照片等则无能为力。此时可以用locate命令帮助我们快速定位任意类型的文件。如:

$ locate CentOS-6.5-x86_64-bin-DVD1.iso
/home/sailor-m/CentOS-6.5-x86_64-bin-DVD1.iso
/home/sailor-m/VirtualBox VMs/CentOS-6.5-x86_64-bin-DVD1.iso

命令locate查找文件并非遍历整个文件系统,而是从系统内已存在的一个文件信息数据库/var/lib/mlocate/mlocate.db中查找的,所以查询速度极快。如RHEL6之类的发行版一般在计划任务中安排每日定时更新该数据库。不过,如果是用户刚刚建立的文件,用locate命令是查找不到的。如:

$ touch ~/mystuff
$ locate mystuff

此时如果用updatedb命令手动更新该数据库,就可以查询到了:

$ sudo updatedb
$ locate mystuff
/home/sailor-m/mystuff

find

文件查找类命令中使用最频繁并且功能最强大的当属find了,它可以在目录树中查找任意类型文件,并可以设置多种搜索条件。命令find对文件的查找是实时搜索,因为要遍历文件系统的目录树,所以速度较慢。该命令的语法格式为:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]

其中-H-L-P三个选项是用于处理符号链接的;-D debugoptions用于诊断和调试;[-Olevel]用于查询的优化。这几个选项其实并不常用,具体用法可以参阅man手册。所以find的常用形式可以简化为:

find [path…] [expression]

  • path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录
  • expression:expression可以分为——“-options [-print -exec -ok …]” 
    • -options,find命令的常用选项,一般为指定查找条件,下面举例介绍
    • -print,将匹配的文件输出到标准输出
    • -exec,对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格
    • -ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

也有人将find命令的结构总结为:

find [目录] [条件] [动作]

下面举几个find查找的例子:

(1)-name 按文件名查找

如查找/etc目录下文件名以.conf结尾的文件:

$ find /etc/ -name "*.conf"
  • 1
  • 1

(2)-user & -group 按文件的属主或属组查找

如查找当前目录下用户属主为sailor的文件:

$ find ./ -user sailor
  • 1
  • 1

当查找目录为当前目录时,./也可以省略。

(3)-type 查找某一类型的文件,诸如:

  • b 块设备文件。
  • d 目录。
  • c 字符设备文件。
  • p 管道文件。
  • l 符号链接文件。
  • f 普通文件。

如查找/etc目录下的所有子目录:

# find /etc/ -type d
  • 1
  • 1

(4)-size 按照文件的大小来查找

-size后面可以跟一个表示大小的单位,如k、M或者G;还可以跟一个-或者+号,表示小于或者大于。下面这条命令查找/tmp目录下零字节大小的文件,并列出其详细信息:

# find /tmp -size 0 -exec ls -l {} \;
  • 1
  • 1

查找/tmp目录下大于1G的文件并把它们删除:

# find /tmp -size +1G -exec rm {} \;
  • 1
  • 1

上述两条命令的效果等价于:

# ls -l `find /tmp -size 0`
# rm `find /tmp -size +1G`
  • 1
  • 2
  • 1
  • 2

(5)-mtime & -ctime & -atime 按时间来查找

其中mtime是文件的修改时间,即文件内容被修改的时间;ctime是文件属性被改变的时间;atime是文件访问时间。该选项后面可以跟数字”N”或+N”或”-N”,分别表示条件为距离今天恰好N天,或者超过N天,或者不到N天。

如查找7日内没有被访问过的文件,并将其删除:

$ find ./ -atime +7 -exec rm {} \;
  • 1
  • 1

(6)-perm 按照文件的权限来查找

查找当前目录下权限为0777的文件:

$ find ./ -perm 0777
  • 1
  • 1

权限数字前面还可以有一个-号,表示至少满足某权限。如查找当前目录下至少同组用户可写的普通文件:

$ find ./ -type f -perm -020
  • 1
  • 1

(7)-maxdepth 指定查找深度

后面可以跟一个数字N表示最多进入N-1级子目录进行查找。如仅在/etc目录(不包含其子目录)下查找文件名以“.conf”结尾的文件:

# find /etc/ -name "*.conf" -maxdepth 1
  • 1
  • 1

文件查找命令find还有许多其他有用的选项,如-nouser-nogroup分别可以查找无有效属主和属组的文件。查看find的man page可以看到几十屏的文档,可见其功能强大,我们只有熟练掌握其常用的用法,其余的在使用中慢慢体会摸索即可。

时间: 2024-12-21 16:54:44

Linux下的文件查找类命令(转载)的相关文章

Linux下的文件夹创建命令使用实践

[文章摘要] 本文以实际的C源程序为样例,介绍了Linux下的文件夹创建命令(mkdir)的用法.为相关开发工作的开展提供了故意的參考. [关键词] C语言  Linux  文件夹创建  makefile  开发 一.mkdir命令简单介绍 mkdir命令用来创建指定名称的文件夹,其命令格式为:mkdir [选项] 文件夹... 当中,[选项]能够是"-m"."-p"或"-v". 此外,文件夹名是区分大写和小写的. 二.本程序流程 本文中的程序用

Linux基础之文件查看类命令

文件查看类命令:cat, tac, head, tail, more, less 分屏查看命令:more和less more命令: more FILE 特点:翻屏至文件尾部后自动退出: less命令: less FILE head命令: 查看文件的前n行: head [options] FILE -n # -# tail命令: 查看文件的后n行: tail [options] FILE -n # -# -f:查看文件尾部内容结束后不退出,跟随显示新增的行: stat命令: stat - disp

linux下find(文件查找)命令的详解

文件查找命令locate和find详解 locate 配合数据库缓存,快速查看文件位置,非实时查找( 数据库查找) find 实际搜寻硬盘查询文件名称 ,实时查找 locate简介 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在

Linux下的文件查找命令——find

Linux下几个常见的文件查找命令: which       查看可执行文件的位置 whereis    寻找特定文件,查看文件的位置 locate       配合数据库查看文件位置 find          实际搜寻硬盘查询文件名称 通常情况下find命令并不是很常用,大家都优先使用whereis和locate命令来查找,因为whereis和locate命令都是利用数据库来查找文件所在,并没有实际查询硬盘,所以速度很快,节省时间.但是我们的find命令依然很强大,它的查找条件相当多,对于用

Linux下的文件查找命令--find

(   <文件有三个"时间">:http://zhweizhi.blog.51cto.com/10800691/1775447           ) 概述 find命令是通过遍历硬盘的方式查找指定名称的文件,因此其效率相比whereis 等指令,要慢许多. 下面介绍find命令的相关用法: 命令格式为: find pathname [option] [action] pathname(路径) 其中,pathname是要查找的路径(.表示当前路径,/表示根路径) 如 fin

linux下的文件查找命令

文件查找:按照文件名或文件属性来搜索文件: 一)locate 模糊查找:        基于专用的数据库进行查找,数据库应该事先创建,并且定期更新:        可以使用updatedb命令手动更新locate数据库:        查找速度非常快,查找精确到非常有限: =============================================================二)find 精确查找:        查找精度高,速度略慢:        在指定的位置进行文件名或文

Linux下查看文件内容的命令

查看文件内容的命令: cat     由第一行开始显示内容,并将所有内容输出 tac     从最后一行倒序显示内容,并将所有内容输出 more    根据窗口大小,一页一页的现实文件内容 less    和more类似,但其优点可以往前翻页,而且进行可以搜索字符 head    只显示头几行 tail    只显示最后几行 nl      类似于cat -n,显示时输出行号 1.cat 与 tac cat的功能是将文件从第一行开始连续的将内容输出在屏幕上.但是cat并不常用,原因是当文件大,行

linux下的文件查找

前言: 文件查找: 在文件系统上查找符合条件的文件: 这与grep是完全不同的,grep是文本处理工具.find与locate是针对于文件的而不是文件中的文本内容. 文件查找常用工具:locate, find 区别:  非实时查找(数据库查找):locate 实时查找:find locate: locate的工作机制: 依赖于事先构建的索引库:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新数据库(updatedb): 索引库的构建方式一般有两种: 系统自动实现:(系统在较为空闲的时

linux下core文件调试方法(转载)

转自于:http://blog.csdn.net/fcryuuhou/article/details/8507775 在程序遇到段错误不寻常退出时,一般是访问内存出错.但是不会给出程序哪里出现的问题,这个时候就需要core文件来帮助调试. 内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开关和大小限制 1)使用ulimit -c命令可查看core文件的生成开关.若结果