专栏首页MyPanda的学习笔记Linux中find命令的点滴积累

Linux中find命令的点滴积累

find 命令在Linux中的作用非常强大,对于初学者来说,可能有很多的参数并不能很熟练的使用,导致无法充分发挥find的强大作用;本文对部分参数做初步的探索:

-regex ;这个参数和 -name 有类似的作用,都是通过文件的名字进行匹配,但是二者的不同的点是: A. -name 只是对文件的名称做匹配,而-regex 是对 文件的路径做匹配. B. 在需要用正则表达式的时候,-regex 会比 -name方便很多,想必你也知道,正则表达式有不同的标准,所以在find命令中可以通过 -regextype 来指定采用的正则表达式规范 , 从而让 -regex 按照指定的正则表达式规范工作,默认是 emacs 规范; 以下列子查找文件名称是4个数字构成的文件,然后取结果的前10行,其中-regex 采用的是 和 grep 命令相同的正则表达式规范;

#以下这条命令可得到正确的查找结果
[root@localhost shell_commands]#  find . -regextype grep -regex ".*/[0-9]\{4\}$" | head
./5534
./8442
./6033
./7162
./4459
./2231
./6731
./8930
./1406
./2238
#以下命令没有找到匹配的结果,因为-regex 表达式忽略了文件的路径“./”
[root@localhost shell_commands]#  find . -regextype grep -regex "[0-9]\{4\}$" | head
[root@localhost shell_commands]# 
#用 -name 参数的时候,写法比较繁琐;
[root@localhost shell_commands]# find . -name "[0-9][0-9][0-9][0-9]" | head
./5534
./8442
./6033
./7162
./4459
./2231
./6731
./8930
./1406
./2238

-mtime; 这个参数相类似的参数有 -ctime, -atime, 其中-mtime 是用的比较多的,个人认为这个参数分开来理解更容易(仅限于按下面的理解,man find是没有下面这种解释的,所以不喜勿喷): -m 表示modify time, -c 表示 change time, -a 表示access time. 而 -time表示 表示以day 为单位,-min表示以分钟为单位,所以组合之后的命令有: -mtime, -mmin, -ctime, -cmin, -atime, -amin,表示 "文件内容修改时间/属性修改时间/访问时间 在 指定的days/minutes 之前“. 看man帮助文档可以知道: 通常有 -mtime +n, -mtime -n, -mtime n 之类的三种,那么怎么理解呢? 比如: -mtime 2 , 表示2x24小时之前修改过的文件,是否可以表示3x24之前的呢?不可以,因为 -mtime 3 才表示3x24之前修改过的啊,所以 -mtime 2 仅仅表示2x24小时之前,但是在3x24之内的文件; 所以为了表示所有2x24之前所有的,就需要 -mtime +2 , 这样就可以了; 同理,-mtime -2 , 因为 比2小的只有1,0, 所以表示0x24前,但是在2x24小时以内的文件; 下面是一个例子:

#查找24x24小时之前修改过的文件
[root@localhost bin]# find . -mtime +24 | head | xargs -I{} ls -l {}
-rwxr-xr-x. 1 root root 155176 Apr 11  2018 ./cp
-rwxr-xr-x. 1 root root 145960 Apr 11  2018 ./cpio
lrwxrwxrwx. 1 root root 3 Jun 10 21:23 ./captoinfo -> tic
-rwxr-xr-x. 1 root root 49992 Apr 11  2018 ./csplit
-rwxr-xr-x. 1 root root 7192 Sep  7  2017 ./clear
-rwxr-xr-x. 1 root root 41568 Apr 11  2018 ./cut
-rwxr-xr-x. 1 root root 100800 Apr 11  2018 ./gzip
-rwxr-xr-x. 1 root root 57416 Sep  7  2017 ./infocmp
-rwxr-xr-x. 1 root root 37360 Apr 11  2018 ./fmt
-rwxr-xr-x. 1 root root 1941 Apr 11  2018 ./zcat
#查找24小时以内,50分钟之前修改的文件
[root@localhost bin]# find . -mtime 0 -mmin +50 -type f  -exec ls -l {} \;
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./8442
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./5534
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./10178
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./25213
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./29063
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./11785
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./16410
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./20392
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./12117
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./15474
#修改其中一个文件,然后重新找50分钟以前,24小时以内修改的文件
[root@localhost bin]# vim 8442
[root@localhost bin]# find . -mtime 0 -mmin +50 -type f  -exec ls -l {} \;
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./5534
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./10178
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./25213
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./29063
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./11785
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./16410
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./20392
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./12117
-rw-r--r--. 1 root root 0 Aug 17 12:34 ./15474
[root@localhost bin]# date
Sat Aug 17 13:46:17 CST 2019
[root@localhost bin]#

本文为原创,转载请注明出处.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • shell脚本中while 和shift 配和解决变长参数问题

    在shell脚本中,我们经常需要根据传递的参数个数来进行相应的处理,那么参数个数不定的情况下如何实现优雅的处理呢?

    qsjs
  • 简单实现创建centos的rootfs

    在使用docker 的时候,我们通常都有用到base image, 这里以centos为例,我们通常通过: docker search centos , doc...

    qsjs
  • 数字证书系列--用证书搭建https网站

    在前面一节介绍了如何创建CA, 以及如何用CA对CSR 证书请求文件进行签名,从而生成签名的服务器端证书。生成签名证书不是我们的最终目的,利用生成的签名证书来加...

    qsjs
  • Centos7中find命令的用法,以及find+exec,find+xargs

    find . | xargs grep -ri ‘content’ //find . | xargs grep -ril ‘content’ 只显示文件名称 ...

    拓荒者
  • 根据中序序列与后序序列构建二叉树

    算法如下: 1)先在后序序列中找到根结点, 2)在中序序列中找到根结点位置,(可以将二叉树分为左子树和右子树) 3)用同样的办法构造左子树 。...

    AI那点小事
  • linux基础命令4

    创建文件夹 # mkdir note # ll -d note/ drwxr-xr-x. 2 root root 4096 Feb 22 15:53 note...

    零月
  • 浏览器环境检测

    本文是直接把seleniumpyppeteer 以及正常打开浏览器 的环境差异直接列出来

    爬虫
  • Linux / MacOS 修改 ls 显示年月日的时间格式

    本文参考转自米扑博客:Linux / MacOS 修改 ls 显示年月日的时间格式

    阳光岛主
  • python中创建和遍历二叉树

    py3study
  • 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kd...

    Michael阿明

扫码关注云+社区

领取腾讯云代金券