which

在PATH环境变量中的路径中查找目标文件,所以用来查找都是可执行文件,Linux下的各种命令本质上就是一个可执行的文件,所以我们安装新的软件之后通常都会有相应的命令将其打开,就是因为安装的过程将该软件的启动文件放在PATH中,Shell会在PATH中搜索该命令的文件并执行。

whereis 和 locate

Linux会把系统的所有文件的信息都记录在一个数据库中,使用whereis和locate会在这个数据库中查找,所以查找速度很快,但考虑到数据库更新的及时性问题,有时也会找不到一定存在的文件或者找到已经删除的文件

whereis [-bBmMsSfu] [待查找的文件或目录]

-b #只查找二进制文件

-B[目录] #只在指定目录下查找二进制文件

-m # 只查找man说明文件

-M[目录] # 只在目录中查找说明文件

-s # 只查找源代码文件

-S[目录] # 只在目录查找源代码文件

-f # 不显示文件名前的路径

-u # 查找不包含指定类型的文件

find

用来在指定目录下查找文件,缺省参数时会查找该目录及其子目录的所有内容,可以使用多个选项-参数来提高搜索精度,可以通过-regex来支持正则表达式,该命令是在硬盘里面遍历寻找,功能很强但是效率很低,通常在whereis和locate找不到时用

$find [待查找目录] [搜索选项1] [参数1] [搜索选项2] [参数2]

按路径字符串搜索

-path [路径字符串] # 按照路径字符串查找文件或目录,大小写敏感

-ipath [路径字符串] # 按照路径字符串查找文件或目录,大小写不敏感

-prune [文件或目录路径] # 忽略指定路径的文件

按属主属组搜索

-uid [用户识别码] # 查找符合指定的用户识别码的文件或目录

-user [用户名] # 查找属于用户名的文件或目录

-gid [群组识别码] # 查找属于群组识别码的文件或目录

-group [群组名] # 查找属于群组名的文件或目录

-nogroup # 找出不属于本机群组识别码的文件或目录

-nouser # 找出不属于本机用户识别码的文件或目录

按正则表示式搜索

-regex [正则表达式字符串] # 查找符合正则表达式的文件或目录,大小写敏感

-iregex [正则表达式字符串] # 查找符合正则表达式的文件或目录,大小写不敏感

按文件名搜索

-name [文件或目录名字符串] # 按照文件或目录名查找文件或目录,大小写敏感

-iname [文件或目录名字符串] # 按照文件或目录名查找文件或目录,大小写不敏感

按文件权限搜索

-perm [权限] # 按照权限查找文件或目录

按文件类型搜索

-type [文件类型] # 按照文件类型查找文件

f 普通文件

l 符号链接

d 目录文件

c 字符设备

b 块设备

s 套接字

p FIFO管道文件

按文件大小搜索

-size [文件大小] # 查找符合指定文件大小的文件,

+ 大于

- 小于

不写 等于

b 块(512byte)

c Byte

w Word(2Byte)

k 千字节

M 兆字节

G G字节

按照inode搜索

-inum [inode编号] # 按照inode编号查找文件或目录

搜索目录层次限制

-depth # 从待查找目录的最深层的子目录开始查找

-maxdepth [目录层级] # 设置最大目录层级

-mindepth [目录层级] # 设置最小目录层级

按时间搜索

-amin [分钟] # 查找指定分钟访问过的文件或目录,-3,表示3分钟内,3表示三分钟前的那个时间点,+3表示超过3分钟。

-atime [天] # 查找指定天访问过的文件或目录。

-mmin [分钟] # 查找指定分钟修改过的文件或目录。

-mtime [天] # 查找指定天修改过的文件或目录。

-cmin [分钟] # 查找指定分钟变化过的文件或目录。

-ctime [天] # 查找指定天变化过的文件或目录。

-cnewer [参考文件或目录] # 查找比参考文件或目录更新的文件或目录

  • Remark:

    Unix/Linux的每个文件都有三个时间戳

    访问时间:最近一个访问时间 > -atime, -amin

    修改时间:文件最后一次修改时间> -mtime, -mmin

    变化时间:文件相关的数据最后一个被修改的时间==> -ctime, -cmin

搜索结果的输出

-print # 如果find返回的是true,就将文件或目录名称列出到标准输出,每列一个名称

-print0 # 如果find返回的是true,就将文件或目录名称列出到标准输出,所有的名称都在同一行

-print [格式] # 如果find返回的是true,就将文件或目录名称按指定格式输出到标准输出

-fprintf [列表文件] [输出格式] # 如果$find返回的是true,就将文件或目录名称按照指定格式把结果输出到指定文件中

搜索结果的处理

-exec [新命令] {} \; # 如果搜索结果为true就对结果执行新命令

-ok [新命令] # 如果搜索结果为true就询问是否对结果执行新命令

a.out  Makefile  test_scanf.c
$find . -type f -perm 0775 -exec ls -l {} \;
-rwxrwxr-x 1 linux linux 7287 10月 17 08:25 ./a.out

其他

# 反向搜索,即搜索不满足!之后条件的文件或目录

-follow # 排除符号链接

-empty # 搜索空文件

例子

#!/bin/bash
#在指定的路径中执行grep
find $1 -name $2 |xargs grep $3 --color

which,whereis, locate, find的更多相关文章

  1. linux中的一些基础命令的使用(which,whereis,locate,find,alias,file,ls,cat,echo,tar,bzip2,gzip,history,mv,cp,rm)

    which whereis locate find alias file ls cat echotar bzip2 gzip history mv cp rm -------------------- ...

  2. Linux 查找文件命令 find whereis locate

    Linux 有三个查找文件的命令:find, whereis, locate 其中find 不常用,whereis与locate经常使用,因为find命令速度较慢,因为whereis与locate是利 ...

  3. linux的查找命令 find whereis locate

    Linux 有三个查找文件的命令:find, whereis, locate 其中find 不常用,whereis与locate经常使用,因为find命令速度较慢,因为whereis与locate是利 ...

  4. linux文件名称查找which,whereis,locate

    1. 文件名称查找 使用find查询时.因为磁盘查询.所以速度较慢. 所以linux下查询更常使用which, whereis, locate来查询,因为是利用数据库查询.所以速度非常快. 2. wh ...

  5. linux 文件查找,which,whereis,locate,find

    linux 文件查找,which,whereis,locate,find 一:which 主要用于查找可执行命令的所在位置: 如图,查找命令 ls的目录: 二:whereis 主要用于查找命令的帮助文 ...

  6. centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课

    centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln   ...

  7. 命令与文件的查询 which whereis locate find

    一:which which查找脚本文件也就是我们的系统命令 用法:which [command] 默认根据我们PATH路径去查找,但是不同的用户肯定设置不同的PATH,所以就像普通用户查找不到一些/s ...

  8. lesson - 5 课程笔记 which/ type / whereis /locate /pwd / etc/passwd/ shadow/ group / gshadow /useradd /usermod /userdel /passwd / su sudo

    一.which 作用: which 命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录, which 命令会在环境变量$PATH 设置的目录里查找符合条件的文件.也 ...

  9. lesson - 4 笔记 /inode / suid / sgid / sbit / chmod /umask / chown / rwx / wc /grep / tr / sort / cut /which / whereis / locate / find / ln /

    一.帮助+基本文件管理+用户管理 1.怎么查看命令帮助 ls --help man ls :查看命令/man 5 file:查看配置文件 二.基本文件管理,通过{查,建,删,改} 四个维度介绍了不同的 ...

随机推荐

  1. 【Win10】单元测试中捕获异步方法的指定异常

    温馨提醒:本文需要知道什么是单元测试才能阅读. 在之前 WPF.ASP.NET 中,单元测试要捕捉指定异常,我们是通过 ExpectedExceptionAttribute 来实现的.如下图: 但是, ...

  2. C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用

    概述 转自 http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html 最近几天一直在关注WinFrom方面的文章 有想着提炼一下 ...

  3. [转载]Ubuntu14.04 LTS更新源

    不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp /etc/apt/sources.l ...

  4. sql 两列相加存到另一列

    假设表table1有a.b两个列,想生成另一个列为a列值+b列值计算列添加语句如下ALTER TABLE table1ADD c AS a+b

  5. mysql乱码以及Data too long for column全解(最完整实用版)

    今天系统升级,开发.测试说本地环境.测试环境都没有问题,都用ssh client升的,演示环境报错了Data too long for column. 仔细检查了下,表字符集都是utf-8,目测长度肯 ...

  6. Java内存泄露的原因

    Java内存泄露的原因 1.静态集合类像HashMap.Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector ...

  7. 在Hadoop平台跑python脚本

    1.开发IDE,我使用的是PyCharm. 2.运行原理       使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入).STDOUT(标准输出)在 ...

  8. AngularJS 最常用的功能

    第一 迭代输出之ng-repeat标签ng-repeat让table ul ol等标签和js里的数组完美结合 1 2 3 4 5 <ul> <li ng-repeat="p ...

  9. RHEL7管道与重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟 ...

  10. 在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具

    这是这个系列的第一篇,介绍一个小工具,主要是用在Web Service测试的. 因为为了用一点高级的东西,就免不了和web service打交道. 你可以使用按照KB819267来修改web.conf ...