今天研究一下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. SpringBoot2.1.3修改tomcat参数支持请求特殊符号

    最近遇到一个问题,比如GET请求中,key,value中带有特殊符号,请求会报错,见如下URL: http://xxx.xxx.xxx:8081/aaa?key1=val1&a.[].id=1 ...

  2. POI导出时,将指定的列设置为下拉列表

    本示例设置第2列为下拉框(下拉框内容为:是/否),从第5行开始到5657行结束. 关键代码示例: ComboxList = new String[]{"是","否&quo ...

  3. hihocoder 神奇字符串

    思路: 暴力,模拟. 实现: #include <iostream> #include <algorithm> #include <cstdio> #include ...

  4. [BZOJ1088][SCOI2005]扫雷Mine DP

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1088 记录下每一个格子对应左边格子放的雷的情况,然后dp转移就好了. #include&l ...

  5. python itertools模块实现排列组合

    转自:https://blog.csdn.net/specter11235/article/details/71189486 一.笛卡尔积:itertools.product(*iterables[, ...

  6. Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明 下一篇:Farseer.net轻量级ORM开源框架 ...

  7. jsdk之微信分享流程

    .步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. .步骤二:引入JS文件 在需要调用JS接口的页面 ...

  8. (转)淘淘商城系列——VMware添加已配置好的虚拟机

    http://blog.csdn.net/yerenyuan_pku/article/details/72802323 我们有时候会碰到虚拟机环境搭建特别麻烦,很容易出错的问题,而这时我们又刚好有别人 ...

  9. git的使用 及一些常见的错误处理

    git安装使用 添加文件到Git仓库,分两步: 1.使用命令git add <file>,注意,可反复多次使用,添加多个文件: 2.使用命令git commit -m <messag ...

  10. python3安装opencv及电子书籍(百度云)

    不能直接  pip install opencv 正解: pip install opencv-python  记得:请确保网络良好!!!!! (1)这个是我学习的电子书籍:opencv-python ...