简述
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语句格式:
find path -option [ -print ] [ -exec -ok command ] {} \;
-print :表示find命令将匹配的文件输出到标准输出中,默认执行该命令
-exec :表示find命令对匹配的文件执行该参数给出的shell命令。相应命令的形式为 cmd {} \;
-ok :它的作用和-exec一样,只是需要用户交互,更安全
option参数说明:
-name :按照文件名查找文件
-perm :按照权限查找文件
-prune :使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略
-user : 按照文件属主来查找文件
-group :按照文件数组来查找文件
-mtime -n +n :按照文件的更改时间来查找文件
-n :表示从此刻算起,文件的更改是在n天以内
+n :表示文件的更改时间是在n天以前
-atime -n +n : 按文件访问时间来查询
-ctime -n +n :按文件创建时间来查询
-nogroup :查找无有效属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser ::查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
-newer file1 ! file2 :查找更改时间比file1新但比file2旧的文件
-type
b:表示块设备文件 block
d:表示目录 directory
c:表示字符设备文件 char
p:表示管道文件 pipe
l:表示符号链接文件 link
f:表示普通文件 file
-depth :在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
-fstype :表示查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
-mount :表示在查找文件时不跨越文件系统的mount点
-follow :表示如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
-cpio :表示对匹配的文件使用cpio命令,将这些文件备份至磁带设备中
实例:
实例1:查找/root/shell目录下以.sh结尾 并且创建时间在1天以内的文件
[root@jiangpeisi ~]# find /root/shell/ -name *.sh -ctime -1
/root/shell/menu.sh
/root/shell/apache-install.sh
/root/shell/lnmp.sh
/root/shell/select.sh
/root/shell/sum.sh
/root/shell/while.sh
实例2:查找/root/shell目录下以.sh结尾 并且创建时间在1天以内的文件,并将文件移动到/opt/目录下
[root@jiangpeisi ~]# find /root/shell/ -name *.sh -ctime -1 -exec mv {} /opt/ \;
[root@jiangpeisi ~]# ll /opt/
total 36
-rw-r--r-- 1 root root 621 Mar 20 15:32 apache-install.sh
-rw-r--r-- 1 root root 48 Mar 17 11:08 b.sh
-rw-r--r-- 1 root root 303 Mar 18 11:28 e.sh
-rw-r--r-- 1 root root 258 Mar 20 14:25 lnmp.sh
-rw-r--r-- 1 root root 357 Mar 20 08:49 menu.sh
drwxr-xr-x 2 root root 4096 Mar 15 15:41 nginx
-rw-r--r-- 1 root root 138 Mar 20 14:12 select.sh
-rw-r--r-- 1 root root 82 Mar 20 00:00 sum.sh
-rw-r--r-- 1 root root 70 Mar 20 00:07 while.sh
实例3:查找/data目录下以.log结尾,修改时间在1天以内,文件大小大于10M的文件,并将文件打包
[root@jiangpeisi ~]# find /data/ -name *.log -ctime -1 -size +10k -exec tar -czPf /datacd/backup.tar.gz {} \;