前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中find命令的点滴积累

Linux中find命令的点滴积累

作者头像
qsjs
发布2020-06-09 10:34:29
1.2K0
发布2020-06-09 10:34:29
举报

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

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

代码语言:javascript
复制
#以下这条命令可得到正确的查找结果
[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小时以内的文件; 下面是一个例子:

代码语言:javascript
复制
#查找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]#

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档