15、find查找文件命令
find是针对文件的名字中的关键字、属性、创建时间、修改时间、创建用户等特性去定位某个文件的。
find后紧跟的是要查找目录的绝对路径。
语法结构:
find 路径 查找条件 [补充条件]
用法:
-
按照文件名字查找
find fileDirectory -name keywordsfileDirectory:要查找的目录的绝对路径
keywords:查找的关键字,必须用引号引起来 -
按照文件的类型查找
find fileDirectory -type f/d/ltype :类型,f /d /l代表: 文件/目录/软链接
-
按照创建时间查找
一天之内创建的文件
find fileDirectory -type f -ctime -130分钟前创建的目录
find fileDirectory -type d -cmin +30 -name keywordsc:是create的简写,表示创建
-
按照修改时间查找
3天前/2分钟内修改过的
find fileDirectory -mtime/mmin +3/-2m:modify的简写,表示修改。
time:表示天
min:表示分钟)(注:不包括当天、当前分钟) -
通过参数exec执行find的后续操作
find fileDirectory -mtime +30 -exec (需要执行的命令,如:rm -rf) {} ;
此处的花括号“{}”代表find出的文件,“ ;”是一个固定写法,代表转义的分号。
1).通过文件名匹配找到以a开头的所有文件,(注:find命令默认会递归查找)
[root@admin home]# find t1/ -name "a*"
t1/a.txt
[root@admin home]# find t1/ -type f -name "a*"
t1/a.txt
# 找到指定路径下所有的txt文件,并将其拷贝到指定目录下
[root@admin test]# find /opt/ -type f -name ?.txt -exec cp {} /tmp/test/ \;
2).找出当前目录中t1目录下的所有文件(注:这些默认都是会递归的)
[root@admin home]# find t1/ -type f
t1/a.txt
t1/training.tar.gz
t1/dd/b.txt
t1/training.tar.gz
3).找出当前目录中training目录下的所有目录
[root@admin home]# find training/ -type d
training/
training/test
training/test/testtt
4).查找一天以前的以aa开头的文件或目录
[root@admin home]# find t1/ -type f/d -mtime +1 -name "aa*"
5).删除30天前的[文件/目录](首先得找到30天前的文件)
[root@admin home]# find t1/ -mtime +30 [-type f/d] -exec rm -rf {} \;
6).结合管道命令
[root@admin home]# find t1/ -mtime +1 -type f | ls -al
7)结合正则表达式
[root@admin home]# find /etc/ -regex .*wd$
/etc/passwd
/etc/pam.d/passwd
/etc/security/opasswd
8)对find找到的结果进行其他操作
比如删除找到的txt文件
[root@admin home]# touch {1..9}.txt
[root@admin home]# find *txt -exec rm -rf {} \;