详解Linux命令与文件查找

一、执行文件名查找

which(查找‘执行文件')  //根据PATH环境变量所规范的路径查询
which [-a] command         //其中参数-a是指列出找到所有命令,而非只显示找到的第一个
例如:which ifconfig

二、文件名的查找

1、whereis(寻找特定文件)

whereis [-bmsu] filename/directoryname
-b :只找二进制的文件
-m :只找在说明文件manual路径下的文件
-s :只找source源文件
-u :查找不在上面三个规定下的特殊文件
例如:whereis ifconfig

2、locate

依赖于事先构建好的索引库,查找速度快;
用法:locate [-ir] keyword
 -i : 忽略大小写的差异
 -r : 后面可接正则表达式的显示防方式
例如:locate ifconfig
说明:lcoate是根据/var/lib/mlocate内记录数据查找,而数据来源通过更新数据库updatedb根据/etc/updatedb.config的配置从硬盘获取数据更新到/var/lib/mlocate;
注意:whereis和locate命令可能搜索到已经删除的文件,原因数据库没及时更新(一般一天更新一次),不过可以手动执行updatedb更新。
 
 安装locate:
  yum -y install mlocate
 查看包:
  yum search mlocate
 安装好更新数据库该命令才生效:
  直接执行updatedb即可


3、find

实时查找工具,通过遍历指定目录下的文件系统层级结构完成文件查找;
工作特性:
查找速度略慢;
精确查找;
实时查找;
用法:
find [option] [PATH] [查找条件] [action]
查找条件:指定查找标准,可以根据文件名、大小、类型、从属关系、权限等标准进行;
action:对符合查找条件的文件作出操作,例如删除操作;

查找条件:

1)根据时间查询

以‘天'为单位:
 -atime、-ctime、-mtime
 以mtime为列
  -mtime n :n为数字,在n天前的‘一天之内'被改过的文件;
  -mtime -n :n天内(包含第n天),修改过的文件;
  -mtime +n :n天前(不包含第n天),修改过的文件;
以‘分'为单位:
 -amin、-mmin、-cmin
说明:时间的计算从现在开始以24小时为一天来计算,如下图所示:

2)根据用户和用户组来查询

-uid n:其中n即指定属主的UID,在/etc/passwd可以查看;
-gid n:其中n即指定属组的GID,在/etc/group可以查看
-user name: 查找属主为name的文件;
-group name:查找属组为name的文件;
-nouser:查找/etc/passwd中没得属主的文件;
-nogroup:查找/etc/group中没得属组的文件;
 例如:find /home -user legayu


3)根据文件名和文件权限查找

-name ‘pattern':查找文件;
-iname ‘pattern':同-name,但忽略查找的文件大小写;
 支持glob通配符*,?,[],[^];
-type TYPE:查找文件类型为TYPE的文件,常见的文件类型有正规文件(f)、设备文件(b、c)、目录(d)、连接文件(l)、socket(s)、及FIFO文件(p)等属性;
-size [+-]SIZE:查找比SIZE还大(+)或还小(-)的文件,大小规格:c:代表byte,k:代表1024byte,还可用M、G表示:MB和GB,如查找大于50kB的文件:-size +50k
-perm mode:查找文件权限“刚好等于”mode的文件;
-perm -mode:查找文件权限“必须包含全部”mode的文件;
-perm /mode:查找文件权限“包含任一”mode的文件;
 例如:find / -name passwd


4)组合逻辑

与:-a
或:-o
非:-not,!
 说明:逻辑关系拆分与合并
  !A -a !B = !(A -o B)
  !A -o !B = !(A -a B )
例如:
 查找/tmp中非root用户的文件
  两种方法:
   find /tmp -not -user root -ls
   find /tmp -not -uid 0 -ls   
找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件

5)find特殊功能

对查询的结果做操作
 -print:输出至标准输出;默认的动作;
 -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息,这里不可以使用‘ll'别名;
 -delete:删除查找到的文件;
 -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
 -ok COMMAND {} \;   :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
 -exec COMMAND {} \;  :对查找到的每个文件执行由COMMAND表示的命令;
注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;
 但是有些命令不能接受过长的参数,此时命令执行会失败;
 另一种方式可规避此问题:
  即find | xargs COMMAND
如:find /root -perm +644 -exec ls -l {} \;
 说明:其中的{}指find查找到的内容,‘\;'代表结束符‘\'是转义符
举例:
 查找/etc目录下所有用户都没有写权限的文件;
  ~]# find /etc -not -perm /222 -type f -ls 
  说明:所有用户至少有一个写的权限,则取反就是都没有写权 
 查找/etc目录至少有一类用户没有执行权限的文件;
  ~]# find /etc -not -perm -111 -type f -ls
  说明:至少有一类用户没有执行权限就是都有执行权限的取反

以上所述是小编给大家介绍的了Linux命令与文件查找详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 详解Linux中两个查找命令locate和find教程

    Linux中有很多查找命令,今天主要讲解locate,find两个命令. 1.locate locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库. (

  • Linux中 find查找命令用法详解

    Linux下查找文件的命令有两个,分别是locate 和 find. locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库.简单介绍下它的两个选项. #locate -i        //查找文件的时候不区分大小写 比如:locate  –i   passwd -n      

  • 如何在 Linux 中查找一个命令或进程的执行时间

    在类 Unix 系统中,你可能知道一个命令或进程开始执行的时间,以及一个进程运行了多久. 但是,你如何知道这个命令或进程何时结束或者它完成运行所花费的总时长呢? 在类 Unix 系统中,这是非常容易的! 有一个专门为此设计的程序名叫 GNU time. 使用 time 程序,我们可以轻松地测量 Linux 操作系统中命令或程序的总执行时间. time 命令在大多数 Linux 发行版中都有预装,所以你不必去安装它. 在 Linux 中查找一个命令或进程的执行时间 要测量一个命令或程序的执行时间,

  • LINUX 查找tomcat日志关键词命令

    #查询catalina.out日志文件中的关键词为2016-04-13 11:26:00的日志信息 grep -C 10 '2016-04-13 11:26:00' catalina.out |more 解释: grep :查询,筛选 -C : grep的-A, -B, -C选项分别可以显示匹配行的后,前,后前多少行内容: 10 :是前后多少行 '2016-04-13 11:26:00' :关键词,注意是单引号包裹 catalina.out : 检索的文件 可以是目录 ./ |more : 这个

  • linux 查找过滤及用户和组管理命令的一些实例

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. ~]# who | cut -d' ' -f1 | sort | uniq 2.列出最后登录到当前系统的用户的相关信息. ~]# last | head -1 3.列出当前系统上被用户当作其默认shell的最多的那个shell. ~]# cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1 4.将/etc/passwd中的第三个字段数值最大的后10个用

  • Linux 命令find之查找文件的示例

    在 Linux 命令中,find用于在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找.按正则表达式查找.按文件大小查找.按文件权限查找等多种查询方式.如果在使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示. 语法:find + 目标目录(路径) + <选项> + 参数 常用选项列表 选项 含义 -perm <权限数值> 查找符合指定的权限数值的文件或目录 -type <文

  • Linux下如何使用grep命令查找带有tab(退格)的字符

    需要在日志文件统计删除的主帖,而日志文件是tab(退格)字符隔开的:假设日志文件名叫delete.log. 保存格式和保存的数据如下, 删除日期            帖子类型(11为主帖,12为回帖)    帖子id    操作人id 2011-11-01 00:05       12      71163578        1153089  2011-11-01 00:19       11      71163800        134379  2011-11-01 00:19    

  • Linux中文件的五个查找命令总结

    Linux的查找命令有5个,分别如下: which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果: type:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的.如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令.type命令其实不能算查找命令: whereis:只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s): locate:相当于find

  • Linux文本查找命令find的用法详解

    find 命令主要用于查找目录和文件,可以指定多种参数进行匹配. 用法:find  +查找路径  +命令参数   [输出形式] 查找路径:告诉find在哪查找 命令参数:指定要查找的文件属性,属性包括多种,类型.名称.大小.修改时间等等 常用的参数: -name 按文件名进行查找 -user 按照文件的属主进行查找 -mtime  按照文件的更改时间来查找,-n 表示文件修改时间距今天n天以内,+n 表示文件修改时间距今天n天以前 -type  按照文件的类型查找,d 表示目录, f表示文件 ,

  • 详解Linux命令与文件查找

    一.执行文件名查找 which(查找'执行文件')  //根据PATH环境变量所规范的路径查询 which [-a] command         //其中参数-a是指列出找到所有命令,而非只显示找到的第一个 例如:which ifconfig 二.文件名的查找 1.whereis(寻找特定文件) whereis [-bmsu] filename/directoryname -b :只找二进制的文件 -m :只找在说明文件manual路径下的文件 -s :只找source源文件 -u :查找不

  • 详解Linux命令修改文件的三个时间

    Linux命令如何修改文件的三个时间 本文主要对stat和touch两个命令进行讲解. 如何查看一个文件的元数据呢?可以使用stat命令. File: 'ceshi1'  文件所在路径 Size: 4096       Blocks: 8 文件占据的磁盘块          IO Block: 4096   directory 文件类型 Device: 801h/2049d  文件所在的设备名 Inode: 378  文件索引节点号        Links: 4 被硬链接的次数 Access:

  • 详解Linux命令中的正则表达式

    命令中的正则表达式 如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式.正则表达式是一套由多个元字符组成的模糊查找模式,使用正则表达式可以快速查找和定位文本中指定的内容. 1.单字符匹配符.  正则表达式主要由一些元字符和匹配模式组成 单字符匹配符可以匹配任意单个字符,这个字符的功能和文件名匹配符中的?功能相同 使用正则表达式查找文本,首先需要使用元字符组成一个查找模式 (1)使用查找模式时,通常将其放入两个斜杠//中,然后再放入命令,例如要在一个文本中查找匹配模式/.i...

  • 详解Linux命令iostat

    Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.在一个以前看到系统监控工具,总在想那些监控工具的代理,如何收集系统性能信息,io性能,cpu使用,带宽使用等信息,偶然发现,不同系统均提供有性能分析工具的,代理可通过这些命令获取系统性能信息,个人猜测,不知道具体是不是这样的.其中iostat可以给我们提供丰富的IO状态数据,下边就来看一下iostat如何使用,命令能够输出那些信息. 简述 Linux系统中通过iostat我们能查看

  • 详解Linux如何将一个文件夹的所有内容授权给某一个用户?

    [问题分析] 我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有root用户有使用这个命令的权限,也是经常会使用到的一个命令.问题来了!如果我要把一个文件夹及其所有子内容授权给mysql用户,我该如何 操作呢? [解决方案] 我们可以加 -R 参数来实现 -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 比如 :  

  • 详解linux命令查看服务器上的实时日志

    目录 背景 查看实时日志 背景 在项目开发过程中,在调试的阶段,往往需要debug或者进行查看日志.但日志一般隐藏得比较深,不容易直接找到,常用命令可能有如下: # 查看当前路径下,所有日志文件包含"xxx"的文件中所在行 grep "xxx" *.log.* --col # 查看开头 head xxx.log # 查看结尾 tail xxx.log # 查看全部 cat xxx.log 但是,这样输出日志,往往都是调试之后,在重新查找输出的记录,这样虽然也能排查,

  • 详解linux命令useradd添加用户

    在 Linux 中 useradd 是个很基本的命令,但是使用起来却很不直观.以至于在 Ubuntu 中居然添加了一个 adduser 命令来简化添加用户的操作.本文主要给大家介绍linux命令useradd添加用户的知识. 1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e e

  • 详解Linux命令行快捷键

    Ctrl+a:光标移到行首. Ctrl+e:光标移到行尾. Ctrl+l:清除终端.该快捷操作与在命令行键入clear作用相同. Ctrl+d:删除光标后一个字符: Ctrl+u:清除当前行.假如在命令行下工作,使用这一快捷操作可以清除从光标处到行首的字符. Ctrl+Alt+功能键之一会显示一个新屏幕.根据默认设置,从F1到F6是Shell提示屏幕. Ctrl+K:删除从光标到行末所有字符. 向上和向下箭头:显示命令历史. bash保存着以前键入过的命令的列表,这一列表被称为命令历史表. Ta

  • 详解Linux下的文件标述符和文件指针

       Linux下的文件标述符和文件指针 文件标识符: 首先我们来了解一下文件标识符是什么东西? 文件描述符是计算机科学中的一个术语,是一个用于表述只想文件的引用的抽象化概念. 在linux当中,每个进程会在进程控制块(PCB)当中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表都有一个指 向已经打开文件的指针. 每个linux进程都应该有三个标准的文件描述符,对应三个标准流. 整数值 名称 (unistd.h)符号常量 (stdio.h)文件流 0 Standard input ST

随机推荐