Find 命令
今天浏览了下linux下find 的man文档,涉及的细节很多,仅把常用的部分整理出来,供后续丰富补充吧。
Find命令格式:
Usage: find [path…] [expression]
path默认为当前路径,expression默认为-print项
Expressions有以下几种组成 :Option,Tests,Action,Operators,分别简单列举其常见形式:
Options:
-depth:在处理本目录之前先处理目录中的内容
-daystart:(-atime,-ctime,-mtime;-amin,-cmin,-mmin)
Tests:
+n:Greater than n;
-n:Less than n;
n:exact n
-anewer file:
-name pattern:
-path pattern:
-perm mode:
-size n[bcwkMG]:
b:512 bytes block
c:bytes
w:two-byte word
k:1024 bytes
M:1024*1024 bytes
G:Gigabityes
-type
b:block
c:character
d:dir
f:regular file
l:symb link
-maxdepth level
-mindepth level
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-amin n 查找n分钟以前被访问过的所有文件
-atime n 查找n天以前被访问过的所有文件
-cmin n 查找n分钟以前文件状态被修改过的所有文件
-ctime n 查找n天以前文件状态被修改过的所有文件
-mmin n 查找n分钟以前文件内容被修改过的所有文件
-mtime n 查找n天以前文件内容被修改过的所有文件
ACTIONS:
-delete
-exec command
-fprint0 file
-fprint file
-prune
-ls
OPERATORS:
EXP1 –and EXP2
EXP1 –or EXP2
举例:
1、 在当前目录下查找指定文件,并在stdout上输出:
[root@localhost ~]#find . –name pattern.c –print
2、 在指定目录下查找某类型文件,并通过ls显示文件属性:
[root@localhost ~]#find /home/admin –name “*.c” –type f –exec ls –l {} \;
在/home/admin 下查找扩展名为。c的文件并查看其属性
3、 查找指定大小, 指定若干天(分钟),前,后,指定类型的文件并删除:
[root@localhost ~]#find /home –name “*.tmp” – type f –size 10k –mtime 5 –print –exec rm –rf {} \;
在home下查找扩展名为。tmp 文件大小为10k修改时间为5天之内的文件,并输出后删除
4、 在/home/admin及其子目录下查找*.vim 类型的文件,但不在其子目录。vim中查找
[root@localhost ~]#find /home/admin -path "/home/admin/.vim" -name "*.vim" –prune
删除大小为0,扩展名为tmp的文件
[root@localhost ~]#find . –name “*.tmp” –size 0 –type f –print –exec rm –rf {} \;
5,、仅在当前的文件夹中查找指定的文件,但不在其子目录中查找
[root@localhost ~]#find / -maxdepth 1 -type d -size -100c
当前目录下查目录,其大小小于100字节,仅查找当前目录,不在其子目录中查找
6、在指定目录的若干级子目录中查找
[root@localhost ~]#find / -mindepth 3 –type f –size 0 –exec rm {} \;
7、查找指定类型文件
[root@localhost ~]#find /mnt/hgfs/ -type l –print
查找链接文件
8、在跟目录下查找xml扩展名属于用户admin其大小为0的普通文件并删除
[root@localhost ~]# find / -name "*.xml" -user admin -type f -size 0 –print –exec –rm {} \;
9、查找非目录文件
[root@localhost ~]#find / !-type d -print
查找链接文件
10、另一种方式删除10天前size 为0的文件方式
[root@localhost ~]#find ./ -size 0 –mtime +10 | xargs rm -f &
11、查找权限位为755的普通文件
[root@localhost ~]# find . -perm 755 -type f -print