文件查找和比较
1、find命令,用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时不设置任何参数,则find命令则在当前目录下查找子目录与文件。并且将查到的子目录和文件全部进行显示。
find(选项)(参数)
选项
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟记;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件和目录;
-atime<24小时数>:查找在指定时间内被存取过的目录或文件,单位以24小时记;
-cmin<分钟>:查找在指定时间内被修改过的文件或目录;
-name
-iname<文本范式>忽略大小写
-type
-links
……
……

参数:起始目录:查找文件的起始目录

实例

根据文件或者正则表达式进行匹配
(1)列出当前目录及子目录下所有文件和文件夹 find .
(2)在/home目录下查找以.txt 结尾的文件名 find /home -name "*.txt"
(3)同上忽略大小写 find /home -iname "*.txt"
(4)当前目录及子目录下查找所有以.txt和 .pdf结尾的文件 find . \( -name "*.txt" -o -name "*.pdf" \) 或者 find . -name "*.txt" -o -name "*.pdf"
(5)匹配文件路径或者文件 find /usr/ -path "*local*"
(6)基于正则表达式匹配文件路径 find . -regex ".*\(\.txt\|\.pdf\)$"
(7)同上,不区分大小写 find . -iregex ".*\(\.txt\|\.pdf\)$"

否定参数
(1)找出/home下不是以.txt结尾的文件 find /home ! -name "*.txt"

根据文件类型进行搜索
find . -type 类型参数
类型参数列表
  f 普通文件
  | 符号连接
  d 目录
  c 字符设备
  b 块设备
  s 套接字
  p Fifo
基于目录深度搜索
(1)向下最大深度限制为3
find . -maxdepth 3 -type f
(2)搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f

根据文件时间戳进行搜索
find . -type f 时间戳
Unix/Linux 文件系统每个文件都有三种时间戳:
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
(1)搜索最近七天内被访问的所有文件
find . -type f -atime -7
(2)搜索恰好在七天前被访问的所有文件
find . -type f -atime 7
(3)搜索超过七天内访问的所有文件
find . -type f -atime +7
(4)搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
(5)找出比file.log修改时间更长的所有文件
find . -type f -newer file.log

根据文件大小进行匹配
find . -type f -size 文件大小单元
文件大小单元
b -- 块(512字节)
c -- 字节
w -- 字(2字节)
k -- 千字节
M -- 兆字节
G -- 吉字节
(1)搜索大于10kb的字节
find . -type f -size +10K
(2)搜索小于10KB的字节
find . -type f -size -10K
(3)搜索等于10KB的字节
find . -type f -size 10K

删除匹配文件
删除当前目录下所有.txt文件
find . -type f -name "*.txt" -delete

根据文件权限/所有权进行匹配
(1)当前目录下搜索出权限为777的文件
find . -type f -perm 777
(2)找出当前目录下权限不是644的php文件
find . -type f -name "*.php" ! -perm 644
(3)找出当前目录用户tom拥有的所有文件
find . -type f -user tom
(4)找出当前目录用户组sunk拥有的所有文件
find . -type f -group sunk

借助 -exec选项与其他命令结合使用
(1)找出当前目录下所有root的文件,并把所有权更改为用户tom
find . -type f -user root -exec chown tom {} \;
上列中,{}用于与-exec选项配合使用来匹配所有文件,然后会被替换为相应的文件名。
(2)找出自己家目录下所有的.txt文件并删除
find $HOME/. -name "*.txt" -ok rm {} \;
上列中,-ok与-extc行为一样,不过它会给出提示,是否执行相应的操作。
(3)找出当前目录下所有的.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> all.txt
(4)将30天前的.log文件移动到old目录中
find . -type f -name "*.log" -mtime +30 -exec cp {} old \;
(5)找出当前目录下的所有.txt文件并以“File:文件名”的形式打印出来
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
(6)因为单行命令中-exec参数中无法使用多个命令,以下方法可以在实现-exec之后接受多条命令
-exec ./text.sh {} \;

搜索但跳出指定的目录
查找当前目录或者子目录下所有的.txt文件,但是跳过子目录sk
find . -path "./sk" -prune -o -name "*.txt" -print

要列出所有长度为0的文件
find . -empty

2、whereis命令
whereis命令是用来定位指令的二进制程序、源程序文件和man手册页等相关文件的路径。

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。
如果省略参数,则返回所有信息。
和find相比whereis查找的速度非常快,这是因为Linux系统会将系统中的所有文件都记录在一个数据库文件中,当使用whereis
和下面介绍的locate时,会从数据库中查找数据,而不是像find那样,通过遍历磁盘来查找,效率自然高,但是数据库文件并不是
实时更新,默认情况下一周更新一次,因此,我们在使用为whereis和locate查找文件时,有时会找到已经被删除的数据,或者
刚刚建立的文件无法找到,原因就是数据库文件没有被更新。

语法
whereis(选项)(参数)
选项
-b:只查找二进制文件。
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名钱的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>:只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
参数
指令名:要查找的二进制程序、源文件和man手册页的指令名。

实例
将相关文件都查找出来
whereis tomcat
whereis svn 如果没有安装,则找不出来

只将二进制文件查找出来
whereis -b nginx

只将说明文件查找出来
whereis -m nginx

只将原始代码文件查找出来
whereis -s nginx

3、which命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里面查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

语法
which(选项)(参数)

选项
-n<文件名长度>:指定文件名长度,指定的长度必须大于等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同,但此处包含的文件名长度包含了文件的路径;
-w:指定输出时栏位的宽度;
-V:显示版本信息;

参数
指令名:指令名列表。

实例
查找文件,显示命令路径:
which pwd
which adduser
说明:which是根据使用者所配置的PATH变量内的目录去搜索可运行档的!所以不同的PATH配置内容找到的命令当然不一样的!

文件查找和比较命令 来自: http://man.linuxde.net/find的更多相关文章

  1. Linux输入输出重定向和文件查找值grep命令

    Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...

  2. shell文件查找和压缩命令

    locate命令 1.locate filename     模糊匹配 只要文件名中包含关键字即可     非实时查找,速度比find快.     依靠索引数据库 /var/lib/mlocate/m ...

  3. 3.shell编程-文件查找之find命令

    3.1.语法格式 find [路劲][选项][操作] 选项参数对照表 3.2.-name 查找/etc/目录下以.conf结尾的文件 find /etc/ -name "*.conf&quo ...

  4. setfacl命令 来自: http://man.linuxde.net/setfacl

    常用选项##### <pre>-b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留. -k,--remove-default:删除缺省的 ...

  5. dstat命令 来自: http://man.linuxde.net/dstat

    来自: http://man.linuxde.net/dstat

  6. shell脚本--文件查找之find命令

    首先是通过文件名称来查找,需要使用一个-name参数. 查询以  .txt结尾的文件,和以 t 开头的文件: ubuntu@ubuntu:~/test$ ls one.txt three.txt tw ...

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

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

  8. Linux学习之路——文件查找:find

    使用权限:所有角色 用法:find [ options ] [ expression ]( find path -expression [ -print ] [ -exec | -ok command ...

  9. Linux基础文件查找

    一.文件查找 (一).命令文件 [root@linux ~]# chich ls //从PATH环境变量 [root@linux ~]# chereis vim [root@linux ~]# ech ...

随机推荐

  1. 转:总结Selenium WebDriver中一些鼠标和键盘事件的使用

    在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...

  2. 关于WebAPI安全认证的问题

    之前项目遇到了一个对外提供API的问题,有些粗浅的想法,抽空记录下. 以下所讨论的都是要解决:谁有资格调用这个API的问题(谁有权限进行这个操作的问题) 为了简化思路,就拿一个查看Java班级的学生举 ...

  3. 简单三段式状态机实验3-Sequence Detect(序列检测)

    1.序列检测器的逻辑功能描述:序列检测指的就是将一个指定的序列从数字码流中识别出来.本例中,我们将设计一个"10010”序列的检测器.设x_in为数字码流输入,z_out为检出标记输出,高电 ...

  4. [Unity]背包效果-使用NGUI实现物品的拖拽效果Drag

    背包效果-使用NGUI实现物品的拖拽效果Drag 效果实现如图 对象层级关系图 PacketCell - Right 对象作为单元格背景 PacketContainer 对象作为单元格容器 Packe ...

  5. springMVC和json结合传递数据

    1. 新建web project 2. 增加jar 3. 改写web.xml <?xml version="1.0" encoding="UTF-8"?& ...

  6. Delphi天气预报查询

    Delphi天气预报查询 天气预报接口api(中国天气网) 开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供) 真正的中国天气api接口xml,json(求加精) ...

  7. JQuery操作DOM对象

    1.追加节点( 儿子关系) append()     $("已有元素").append("动态添加元素");  在已有元素的内部的后面追加一个元素 append ...

  8. Ubuntu iptables 设置

    在ubuntu中由于不存在 /etc/init.d/iptales文件,所以无法使用service等命令来启动iptables,需要用modprobe命令. 启动iptables modprobe i ...

  9. [iOS]C语言技术视频-10-指针变量

    下载地址: 链接: http://pan.baidu.com/s/1jGjbaXg 密码: u2t9

  10. JAV基础语法之---数据类型转换

    数制转换": 1.string 转 byte[] String str = "Hello";byte[] srtbyte = str.getBytes(); 2.byte ...