Linux文件查找

Linux文件查找

Linux的基本法则之一为一切皆文件,Linux遵循FHS(Filesystem Hierarchy Standard),文件系统目录标准,FHS采用树形结构组织文件;在使用过程中,我们会遇到知道文件名却不知道文件位置的情况,或者查找某些类型的文件,此时我们需要文件查找的功能。

一、常用查找命令:

Locate与finad:

locate命令为非实时查找模式;非实时查找,需要根据索引查找,依赖于索引,而索引构建相当占用资源;索引的创建是在系统空闲时由系统自动进行(每天任务);手动进行使用updatedb命令。Locate命令,查找速度快,查找不精准且模糊。

find命令为实时查找模式,遍历所有文件进行条件匹配;查找精准,速度慢。

二、find命令用法

1、命令格式:

#find [option]... [查找路径] [查找条件] [处理动作]

查找路径:默认为当前目录;

查找条件:默认为指定路径下的所有文件;

处理动作:默认为显示至屏幕;

2、查找条件:

2.1、文件名查找:

-name"filename":

-iname"filename":查找时忽略字符大小写;

注意:文件名查找支持使用通配符(globbing);

*:任意长度的任意字符;

?:任意单个字符;

[]:指定范围内的任意单个字符;

[^]:范围之外的任意字符;

2.2、用户和组查找:

-user USERNAME:根据文件的属主查找;

-group GRPNAME:根据文件的属组查找;

-uid UID:根据文件的UID查找;

-gid GID:根据文件的GID查找;

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

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

2.3、根据文件类型查找:

-type TYPE:

f:普通文件

d:目录文件

l:符号链接

b:块设备

c:字符设备

s:套接字文件

p:命名管道

2.4、文件大小查找:

-size [+|-]#UNIT

常用单位:k,M,G,默认为字节;

#UNIT:#-1<x<=#,#表示查找的范围为小于#且大于#-1单位内大小的文件;

-#UNIT:x<=#-1:-#表示的其实是#-1范围内的文件;

+#UNIT:x>#:+#表示的是大于#号的文件;

2.5、根据时间戳查找:

以“天”为单位,访问时间:

-atime [+|-]#

+#:x>=#+1,+#表示#+1天之前被访问过的文件;

-#:x<#,-#表示小于#天之内的访问过的文件;

#:#<=x<#+1,#表示在#和#+1天之内访问过的文件;

-mtime:修改时间

-ctime:状态时间

以“分钟”为单位,格式同上:

-amin:

-mmin:

-cmin:

2.6、根据权限查找:

-perm [+|-]MODE

MODE:与MODE精确匹配;

+MODE:任何一类用户的权限只要能包含对其指定的任何一位权限即可;

-MODE:每类用户指定的检查权限都匹配;

为三类用户所有指定的检查权限都能够被包含;

2.7、组合条件查找:

-a:与,同时满足

-o:或,满足一个即可

!,-not:非,条件取反

-not A -a -not B = -not (A-o B)

-not A -o -not B = -not (A-a B)

3、处理动作:

-print:显示,默认处理动作;

-ls:类似于ls –l;

-exec COMMAND {} \:对匹配的文件执行该参数所给出相应的COMMAND;

-ok COMMAND {} \;执行命令前需要确认;

find:一次性查找符合条件的所有文件,并一同传递给给-exec或-ok后面指定的命令;但是有些命令不能接受过长的参数;此时使用另一种方式:

find | xargs COMMAND

三、find补充材料(摘自互联网):

find与xargs

在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高。

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

时间: 2024-08-09 23:54:36

Linux文件查找的相关文章

Linux文件查找之find&locate

Linux文件查找之find&locate 一.概述 Linux系统核心的思想之一"一切皆文件",对于这么多的文件,如何快速查找过滤呢?下面我们就看看系统提供的文件查找命令find和locat,熟练使用find命令是运维人员的必经之路 二.find的用法及示例 1.find特点 查找速度略慢 精确查找 实时查找 只能搜索有读取和执行权限的目录 2.find用法 用法:find  [options]  [查找路径]  [ 查找条件]  [处理动作] 查找条件: 根据文件类型查找

Linux文件查找.md

Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 whereis whereis命令是定位可执行文件.源代码文件.帮助文件在文件系统中的位置.这些文件的属性应属于原始代码,二进制文件,或是帮助文件.whereis 程序还具有搜索源代码.指定备用搜索路径和搜索不寻常项的能力. 语法 whereis [-bmsu] 文件或者目录名称 参数 -b 定位可执

Linux 文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述     <exec 后期讲解> 关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 一.find 命令格式 1.find命令的一般形式为:

Linux文件查找命令find,xargs详述

转自:http://www.linuxsir.org/main/node/137本文进行了整理修订 Linux文件查找命令find,xargs详述 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录 版权声明 前言:关于find命令 一.find 命令格式 1.find命令的一般形式为: 2.find命令的参数: 3.find命令选项: 4.使用exec或ok来执

Linux文件查找命令find用法整理(locate/find)

Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2.find 实时,精确,功能强大,用法: find 路径 查找标准 查找后动作 (1)路径:. 或者 ./ 均表示当前目录 (2)查找标准: -name 'FILENAME' 文件名精确匹配(支持通配符* ? []) -iname 'FILENAME' 文件名模糊匹配(不分大小写) -regex P

Linux文件查找命令find,xargs详述【转】

转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Linux文件查找命令find,xargs详述 总结:zhy2111314来自:LinuxSir.Org整理:北南南北摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录

Linux文件查找命令

1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> - <指定目录>: 所要搜索的目录及其所有子目录.默认为当前目录. - <指定条件>: 所要搜索的文件的特征. - <指定动作>: 对搜索结果进行特定的处理. 如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显

linux文件查找工具 -- find

简述: linux中find命令是一种强大的实时查找工具,它通过用户给出的路径,在该路径下的文件系统中进行文件查找.因此在遍历一个较大的文件系统时会比较花费时间,而且find命令占用资源也是比较大的,所以它的工作特点是,查找的速度略慢,但是可以实现精确查找和实时查找.由于用户权限的问题,可能只搜索用户具备读取和执行权限的目录.由于find命令能力很强大所以它的选项也有很多. find命令用法: find命令格式: find [选项] [查找起始路径] [查找条件] [处理动作] find [-H

linux文件查找及操作

在linux下查找文件的办法最常用的就是find指令,让我们来看一下find指令如何来使用吧: find find . -name  txt             //在当前目录查找名字为txt的文件或者是文体夹 find . -type c                //字符设备 find . -type d                //目录 find /dev -type b             //块设备 find /dev -type s             //网络