命令格式:
Find 路径 -ption [ -print ] [ -exec -ok command ] {} \;
时间戳:
# Access time(atime) 取用文件时间 :凡是读取或查看而不修改文件的操作,例如cp、head、tail、cat、more、less、grep、awk、sed,就会改变文件的 Access time
# Modify time (mtime) 内容修改时间:凡是文件内容有改动或存盘的操作,就会改变文件的Modify time
# Change time (ctime) 状态改变时间:凡是文件属性、位置改动的操作,例如chmod、chown、mv、ln做硬链接等,就会改变文件的Change time
Note:
如果创建文件,则3个时间全部改变
ls -l 查看文件时,显示的时间就是Modify time
ln -s 做文件的软连接会改变文件的取用时间,做硬链接会改变文件的状态改变时间
-print: find命令将匹配到的文件输出到标准输出
-exec: find命令将匹配到的文件执行该参数所给出的shell命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠,{} 花括号代表前面find查找出来的文件名。
-ok: 和exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令参数 -ption:
-type 查找某一类型的文件,诸如:
f - 普通文件
d - 目录文件
l - 链接文件
p - 管道文件
b - 块设备文件
c - 字符设备文件
-perm 按照文件权限查找文件
-perm 775 100%的匹配,多了或少了的权限就不是100%的匹配
-perm -775 只能比等于775或比775权限多,不能少的匹配
-perm +6000 匹配4000、2000、6000、6600等权限
-links +n 查找硬链接数大于n的文件或目录
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-size +1000000c 查找大于1M字节的文件,c表示字节,+代表大于,-代表小于
-mtime/-mmin -/+n 按照文件修改时间来查找文件,-n指n天或者分钟以内,+n指n天或者分钟以前
-atime/-amin --/+n 按照文件取用时间来查找文件,-n指n天或者分钟以内,+n指n天或者分钟以前
-ctime/-cmin -/+n 按照文件改变时间来查找文件,-n指n天或者分钟以内,+n指n天或者分钟以前
-name 按照文件名查找文件
-empty 查找空的文件或目录
-iname 不区分大小写查找
-and 并且
-or 或者
-cpio 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统地信息
-false 查找系统中总是错误的文件
-mount 在查找文件时不跨越文件系统mount点
-follow 如果find命令遇到符号连接文件,就跟踪至链接所指向的文件
实例:
在/mnt下查找名称为april*的目录
find /mnt -type d -name april*
找出linux中带有s的权限的文件
find / -type f -perm +6000
查找小于1,500字节大小的文件并把结果输出到file中
find / -type f -size -1500c > file
要查找磁盘中大于3M的文件并且删掉
find / -type f -size +3000k -exec rm -rf {} \;
将find出来的东西且文件系统类型为vfat的文件拷到另一个地方
find / -type f -name *.c -fstype vfat -exec cp {} /tmp \;
在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名 A)
find /tmp -type f -name "*.h" -exec grep "SYSCALL_VECTOR" {} \;