今天研究一下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. 数组声明的几种方式以及length属性

    声明一: int[] arr=new int[10]; for(int i=0;i<arr.length;i++){ arr[i]=i; } 声明二: int[] arr2={1,2,3}; 声 ...

  2. 移动端UI自动化Appium测试——获取APK的Package及Activity属性值

    1.如果有代码环境,直接在AndroidManifest.xml中查找: package值: Activity值: 2.如果没有开发代码,直接用命令获取: cmd进入到 android-sdk-win ...

  3. SpringMvc如何将Url 映射到 RequestMapping (一)

    SpringMvc Url 匹配规则详解 最近开始阅读Spring 源码,虽然用了很久的spring ,但是没有真正的分析过Spring时如何工作的.今天重 MVC 的Url匹配规则开始进行Sprin ...

  4. 纯CSS写的对勾样式

    & .cicle{          position: relative;          float: right;          margin-right: -1rem;      ...

  5. 微信小程序组件解读和分析:十、input输入框

    input输入框组件说明: 本文介绍input 输入框的各种参数及特性. input输入框示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 01 02 03 04 0 ...

  6. js 日期时间大小比较

    <body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...

  7. vue2.0 vue.set()

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. win7电脑桌面壁纸曝光过高影响图标怎么办?亲测实用解决方法

    现在用win7系统的人应该还是挺多的吧,虽然说windows家族已经升级到现在的win11了,相信大多数人家用的电脑系统还是win7吧,今天要讲的是一个壁纸曝光度过高的解决办法,虽然还不清楚为什么,但 ...

  9. AttributeError: 'tuple' object has no attribute 'extend'

    出错demo In [5]: a.extend([4,5]) --------------------------------------------------------------------- ...

  10. CE工具里自带的学习工具--第四关

    图解: