今天研究一下find的一些常用的命令。

find格式:find filepath [-option] [-print|-exec|-ok...]

其中常用的option主要有

-type d|f|s|b|c|p
-perm
-user
-group
-mtime
-depth
-newer
-name
-regex

下面我们通过例子来研究,事先准备了这样的一个目录结构

[root@test tmp]# find ./
./
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3
./test.txt

他们的仔细信息如下:

[root@test tmp]# ll -R
.:
total
drwxr-xr-x root root Jul : root
drwxr-xr-x www root Jul : root2
-rw-r--r-- root root Jul : test.txt ./root:
total
drwxrwxrwx root root Jul : sub1 ./root/sub1:
total
drwxr-xr-x root root Jul : sub2 ./root/sub1/sub2:
total
drwxr-xr-x root root Jul : sub3 ./root/sub1/sub2/sub3:
total ./root2:
total
drwxr-xr-x root root Jul : sub1 ./root2/sub1:
total
drwxr-xr-x root root Jul : sub2 ./root2/sub1/sub2:
total

-type: type后面可以接上面说的六种参数,表示查找的类型,其中f d是最常用的,分别表示查找文件和目录。

[root@test tmp]# find ./ -type d
./
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3
[root@test tmp]# find ./ -type f
./test.txt

-perm 权限: perm用于查找某个权限的文件。

[root@test tmp]# find ./ -perm
./root/sub1
[root@test tmp]# find ./ -perm
./
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1/sub2
./root/sub1/sub2/sub3

-user 用户名: 用于查找特定所有者的文件。

[root@test tmp]# find ./ -user www
./root2
[root@test tmp]# find ./ -user root
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3
./test.txt

-group 用户名: 用于查找特定用户组的文件。用法与-user一样。

-mtime -n|+n:-n表示查找n天之内修改过的文件,+n表示查找n天之前修改过的文件。时间轴都以现在的时候为起点。

[root@test tmp]# find ./ -mtime -
.
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3
./test.txt
[root@test tmp]# find ./ -mtime +1
[root@test tmp]#

-newer filepath: 查找比filepath更新的文件

[root@test tmp]# find ./ -newer root2/sub1
./
./test.txt

-depth: 先查找处理目录里的内容,然后再处理目录。

上面的解释可能不太明了,我们来比较下面两个例子:

[root@test tmp]# find root/
root/
root/sub1
root/sub1/sub2
root/sub1/sub2/sub3 [root@test tmp]# find root/ -depth
root/sub1/sub2/sub3
root/sub1/sub2
root/sub1
root/

现在是否明白了,不加-depth时,find先处理当前目录,然后接着处理目录下面的文件/目录。反之,先处理目录下面的内容,再反过来处理目录。

我们再来看上面的例子,加-depth以后,先读取root里的sub1,因为它是目录,于是又先处理了sub1里的sub2,一步一步往下推。等到了sub3以后,因为里面已经没有东西了,所以处理sub3,然后回朔处理sub2,一步一步向上。

-name 文件名: 根据文件名查找。可以使用?代替一个字符,*代替一字串,[]选择一个列表里的字符。

[root@test tmp]# find ./ -name "root?"
./root2
[root@test tmp]# find ./ -name "root*"
./root2
./root
[root@test tmp]# find ./ -name "[rs]*"
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3
[root@test tmp]# find ./ -name "[rst]*"
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3
./test.txt

-regex partern: 这就是牛叉的工具,可以使用正则来匹配文件名。需要注意的是,它要求匹配的是完全的路径。

[root@test tmp]# find ./ -regex 'root'
[root@test tmp]# find ./ -regex './root'
./root
[root@test tmp]# find /tmp/ -regex '/tmp/root'
/tmp/root
[root@test tmp]# find ./ -regex './root.*'
./root2
./root2/sub1
./root2/sub1/sub2
./root
./root/sub1
./root/sub1/sub2
./root/sub1/sub2/sub3

regex使用的正则规则是受-regextype影响的。具体man find看一下吧。

!: 否定前缀。怎么用呢?直接看例子吧

[root@test tmp]# find ./ ! -name sub*
./
./root2
./root
./test.txt [root@test tmp]# find ./ ! -name sub* ! -type d
./test.txt

Linux find常用命令的更多相关文章

  1. Linux GDB常用命令一栏

    Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似 ...

  2. Linux 下常用命令

    linux 下常用命令: 1.删除文件命令为 rm 2.创建目录的命令是:mkdir 3.删除目录的命令是rmdir(空目录) 4.切换到root帐号:su 5.查看所有进程:ps -aux 6.杀死 ...

  3. linux 服务器常用命令整理

    linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...

  4. 计算机硬件基本知识及Linux的常用命令

    ------------------1. 计算机硬件基本知识------------------ CPU - 寄存器 - L1/L2/L3 - 内存 - 硬盘 - 互联网下载/其他存储介质传输 寄存器 ...

  5. 一、Linux概述 二、Linux的安装 三、Linux的常用命令(重点)

    一.Linux概述###<1>操作系统 OS,管理和控制 计算机的 硬件和软件资源的 计算机程序. 最基本的系统软件. 是用户和计算机交互的桥梁,是硬件和软件交互的桥梁. 操作系统:she ...

  6. Linux帮助——常用命令

    Linux帮助——常用命令 摘要:本文主要学习了Linux系统中常用的一些命令. uname命令 uname命令可以显示电脑以及操作系统的相关信息. 基本语法 uname [选项] 选项说明 -a:显 ...

  7. Linux虚拟机常用命令

    参考原文链接:(https://blog.csdn.net/fanyun_01/article/details/51083585) 一.Linux虚拟机常用命令 # virsh list //查看已打 ...

  8. [转帖]Linux systemd 常用命令

    Linux systemd 常用命令 https://www.cnblogs.com/tsdxdx/p/7288490.html systemctl hostnamectl timedatectl l ...

  9. Linux系统管理常用命令

    Linux系统管理常用命令 分类: Linux2011-01-10 18:26 1538人阅读 评论(0) 收藏 举报 linuxcommandservicenginxuserunix 目录(?)[+ ...

  10. Linux + NodeJS 常用命令

    Linux系统常用命令 1.su 由当前用户切换至root用户: 2. su username 切换至某一用户: 3.chmod u+w /etc/sudoers 为/etc/sudoers文件添加写 ...

随机推荐

  1. vue watch监听对象及对应值的变化

    data:{ a:1, b:{ value:1, type:1, } }, watch:{ a(val, oldVal){//普通的watch监听 console.log("a: " ...

  2. 基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)

    前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 基于Ubuntu14.04下Suricata(一款高性能的网络ID ...

  3. XML读取的小例子

    public void CalculateLeave(string userAcount, string xml) //传过来的是xml内容 { try { var xmlDoc = new Syst ...

  4. Angular jsonp 同源策略的问题

    引用:http://www.cnblogs.com/dengzy/p/5388357.html 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决 ...

  5. [转]Sublime Text操作

    原文地址:http://www.madongdong.me/sublime-text3%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/ 作者:马东东 前言(Prologue) ...

  6. 开发小Tips

    Kotlin语言篇: 1.抽象类的定义 abstract class Person(var name : String, var age : Int) : Any() { abstract var a ...

  7. linux下mysql开启可访问

    修改mysql配置连接信息 将bind-address注释 vim /etc/my.cnf 修改mysql用户授权 mysql>GRANT ALL PRIVILEGES ON *.* TO ' ...

  8. C语言基础-运算符

    sizeof()运算符 •sizeof可以用来计算一个变量或者一个常量.一种数据类型所占的内存字节数 •sizeof一共有3种形式   1.sizeof( 变量\常量 )      sizeof(10 ...

  9. iTOP-6818开发板-Android4.4系统下RFID射频模块测试例程

    平台:迅为iTOP-6818开发板 系统:Android4.4版本 例程:RFID射频模块测试例程 rc522 驱动在 Android 系统的内核是默认集成的,用户可以在开发板上使用命令“ls /de ...

  10. patest_1003_Emergency (25)_(dijkstra+dfs)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...