1、find 命令:
1.1、find命令格式:
find pathname -options [ -print -exec -ok command ] {} \;
- pathname : find命令所查找的目录路径。例如用 . 来表示当前目录,用 / 来表示系统根目录。
- -print : find命令将匹配的文件输出到标准输出。
- -exec : find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
- -ok : 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
- -o # 或。 例:find -name ap* -o -name may* 查找以ap或may开头的文件。
- -rl # r代表递归,l代表只列出匹配的文件。
- -name filename #查找名为filename的文件。例:find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
- -perm #按执行权限来查找。例:find /home -perm 0700 # 查权限为700的文件或目录。
- -user username #按文件属主来查找。例:find / -user fred #查找在系统中属于FRED这个用户的文件
- -group groupname #按组来查找。例:find /home -group cnscn # 列出/home内组为cnscn的文件或目录
- -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
- -atime -n +n #按文件访问时间来查.
- -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
- -nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在。例:find /home -nogroup # 列出/home内不属于本地组的文件或目录
- -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存。例:find /home -nouser #列出/home内不属于本地用户的文件或目录
- -newer file1 ! file2 #查找更改时间比file1新但比file2旧的文件.
- -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
- -size n[c] #查长度为n块[或n字节]的文件
- -depth #使查找在进入子目录前先行查找完本目录。例:find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
- -empty #查找大小为0的文件或空目录。例: find /home -empty #查找 /home下大小为0的文件或空目录
- -mount #表示在查找文件时不跨越文件系统的mount点
- -follow #表示如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
- -cpio # 表示对匹配的文件使用cpio命令,将这些文件备份至磁带设备中
- -prune #忽略某个目录
-
-fstype #表示查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
在/ l o g s目录中查找更改时间在7日以前的文件并删除它们:find logs/ -type f -mtime +7 -exec rm -f {} \;
2、find应用
在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对传递给exec的命令长度是有限制的,这样,在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是”参数列太长”或”参数列溢出”。这就是xargs命令的用户所在,特别是与find命令一起使用, find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它就可以先处理最先获取的那一部分文件,然后是下一批,并且如此继续下去。
2.1、和xargs搭配用法
#删除/app/logs/目录下的7天前的文件
find /app/logs/ -type f -mtime +7 | xargs rm -f
#删除30天前的目录
find /app/logs/ -type d -mtime +30 |xargs rm -rf
2.2、和exec搭配
#删除/app/logs/目录下的7天前的文件
find /app/logs/ -type f -mtime +7 -exec rm -f {} \;
2.3、和反单引号 搭配使用
rm -f `find /app/logs/ -type f -mtime +7`
3、示例
3.1、根据文件的特征进行查询
find /home/test/ -amin-10 #查找在系统中最后10分钟访问的文件
find /home/test/ -atime-2 #查找在系统中最后48小时访问的文件
find /home/test/ -empty #查找在系统中为空的文件或者文件夹
find /home/test/ -mmin-5 # 查找在系统中最后5 分钟里修改过的文件
find /home/test/ -mtime-1 #查找在系统中最后24小时里修改过的文件
find /home/ftp/pub -user test #查找在系统中属于test这个用户的文件
3.2、查找并显示文件
find ./ -name 'start*' -ls
结果:
[/home/admin/runtime/framework]find ./ -name 'start.properties' -ls
1707335 4 -rw-r--r-- 1 admin admin 2590 Nov 18 14:20 ./start.properties
[/home/admin/runtime/framework]find ./ -name 'start.properties'
./start.properties
·