关于find命令的用法:
1.首先熟知三个time:
atime:文件被访问/读取时更新的时间
ctime:文件属性或权限被更改时更新的时间
mtime:文件内容被修改时更新的时间
关于这三个时间,mtime被更新时,ctime一定会被更新;这是因为mtime被更新时,元数据一定会发生变化,大小也会发生改变,属性也就被改变了
【用命令stat + 文件/目录可以查看三个时间】
2.格式:find [PATH] [option] [action]
参数:
- 与时间相关的参数(atime,ctime,mtime,下面以mtime为例)
a) –mtime n:n天之前的“一天之内”被更改过的文件
b) –mtime +n:n天之前(不包括n天)被更改过的文件
c) –mtime –n:n天之内(包括n天)被更改过的文件
d) –newer file:file是一个存在的文件夹,列出比file还要新的文件名
- 与文件权限/名称有关的参数:
a) –name filename:查找指定目录下名称为filename的文件
b) –type TYPE: 查找指定目录下类型为TYPE的文件
c) –size [+-]SIZE:查看比SIZE还大(+)/小(-)的文件
d) –perm mode:查看文件权限(用数字表示)刚好等于mode的文件
e) –perm –mode:查看文件权限包括mode的文件(即一个文件权限为0744的文件,使用-perm -0744,4755权限的文件也会被列出来)
f) –perm +mode:查看包含mode里面任意权限的文件(即一个文件权限为-rwxr-xr-的文件,使用-perm +755,-rw-------权限的文件也会被列出来)
【值得注意的是,find命令会查找子目录,不仅仅局限于当前目录】
- exec参数:
-exec command:command为其他参数,-exec后面接其他参数来处理找到的结果,不支持命令别名
例:find / -perm +7000 –exec ls –l
{} \;{}代表find找到的内容,find的结果会被放置到{}中
额外命令从-exec开始到\;结束,由于;在系统环境中有不同的意义,故用\来转义
- ok参数:
-ok command:跟exec一样,只不过在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
3.find与xargs命令结合:
find … … |xargs
+ 命令:默认把find搜索到的文件/目录呈现称为一行,用空格隔开,如下:
[[email protected] tmp]# find /tmp/ -mtime
-1 -type f | xargs
/tmp/test1 /tmp/test2
/tmp/test4 /tmp/test3
用几个例子来演示一下:
[[email protected] tmp]# find
/tmp/ -mtime -1 -type f | xargs rm –f
(把find搜索到的文件列出来,执行rm命令)
[[email protected] test]# find
/tmp/ -mtime -1 -type f | xargs -i mv {} {}.txt
[[email protected] test]# ls
test1.txt test2.txt
test3.txt test4.txt
(把find搜索到的文件改名为.txt格)
(-i的作用:把过滤出来的文件一个一个的进行操作;如果不加+i,则会变成
mv test1 test2
test3 test4…,test4不是文件不能进行操作
)
原文地址:https://www.cnblogs.com/xqr2018/p/8877230.html