Linux下find命令在目录结构中搜索文件,并执行指定的操作。
1. Linux下find命令格式:
$ find pathname -options [-print -exec -ok …]
2. 命令功能:
用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)。
3. 命令参数:
pathname:find命令所查找的目录路径(也就是要在哪个目录下查找)。例如用 . 来表示当前目录,用 / 来表示系统根目录。
-options :是命令选项的意思。
-print : find命令将匹配到的文件信息输出到标准输出。
-ok:和-exec命令一样,只不过以一种更安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
4.命令选项:
-name:按照文件名查找文件
例1:$ find . -name file #在当前目录下查找一个名为 file的文件( . 代表当前目录)。
例2:$find -name test* #在当前目录下查找已 test 开始的文件
例3 : $find -name test* -o -name file* #查找以test或file为开头的文件。-perm:按照文件权限查找文件
例1: $ find . -perm 777 #在当前目录下查找权限为 rwxrwxrwx 的文件。
例2:$find . -perm -007 #在当前目录下查找最低权限为 - - - - - -****r w x 的文件。(-007表示最低权限为007,像拥有777,667,567等等这些权限的文件就可以显示)-group:按照文件所属组来查找文件。
例:$ find . -group root #在当前目录下查找属于 root 组的文件。-user:按照文件属主来查找文件。
例: $find . -user root # 在当前目录下查找属于root用户的文件。-mtime -n +n:按照文件的更改时间来查找文件, - n 表示文件更改时间距现在n天以内,+n表示更改时间据现在 n 天以前。find命令还有-atime和-ctime 选项,但他们都和-mtime选项相同。
-mmin -n +n:表示按照更改的分钟来显示。用法和-mtime -n +n 的用法相同。
例:
$find / -mtime -5 #在系统中查找在5天之内更改过的文件。
$find / -amin -60 #在系统中查找在60分钟之内更改过的文件。
$find / -amin +60 #在系统中查找在60分钟之前更改过的文件。-nogroup :查找无有效所属组的文件,即该所属的组在/etc/groups中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
例: $ find / -newer file1 ! file2-type查找某一类型文件,诸如:
b - 块设备文件。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
例: $ find / -type d #查找系统下的所有目录。-size n:[c] 查找文件长度为n块的文件,带有 c 时表示文件长度以字节计。
例1:$ find . -size 500 #在当前目录下查找长度为500块的文件(一块为512字节)
例3:$ find . -size -500 #查找小于500字节的文件
例5:$ find . -size -500c -size +400c # 查找小于500而大于400字节的文件
例6 :$ find -empty # 查找大小为0的文件或空目录。-depth :在查找文件时,首先查找当前目录下的文件,然后再在其他子目录下查找。
-follow :如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio :对匹配的文件使用cpio命令,将这些文件备份到磁盘设备中。
命令练习:
1.在 /logs 目录中查找更改时间在5天以前的文件并删除它们:
$ find /logs -type f -mtime +5 -exec rm {} \;
2.在/root目录下用find 命令查找文件大小为60字节的文件
$ find /root -size 60c -exec ls -ld {} \;
3.在/root目录下用find 命令查找小于500k大于50k的文件。
find /root -size -500k -size +50k -exec ls -ld {} \;
4.查找 / 目录下文件名为 test 的目录。
$ find / -name test -type d
5.查找系统中最近5分钟访问的目录。
$ find / -amin -5 -type d
6.查找系统中最近5天访问的文件
$ find / -atime -5 -type f
7.查找所有目录中名称中按照“ .log ”结尾的目录。
$ find / -name *.log -type d
8.查找当前目录下所有权限为755的文件,并设置成777.
$ find . -perm 755 -type f -exec chmod 777 {} \;
9.查找文件大小为10k的文件,并删除。
$ find . -size 10k -type f -exec rm {} \;
10**.**查找一个名为test.txt的文件并打印其内容。
$ find -name test.txt -exec cat {} \;
11.find / -name filename | xargs rm -rf #找到文件并删除。(|:(竖杠)管道 (pipeline),连结上个指令的标准输出,做为下个指令的标准输入。)