一 .功能
find命令在目录结构中搜索文件,并执行指定的操作
二.格式
find pathname -options [-print -exec -ok …]
pathname: find命令所查找的目录路径。例如用.来表示当前目
录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执⾏行该参数所给出的shell命
令。相应命令的形式为’command’ { } \;注意{ }和\;
之间的空格。
-ok: 和-exec的作⽤用相同,只不过以一种更为安全的模式来执⾏行
该参数所给出的shell命令,在执行每一个命令之前,都会给出提
示,让用户来确定是否执行。
三.使用
1.按照文件名查找文件
find -name april* 在当前目录下查找以april开始的文件
例如:我们要在wrngt目录下查找study此文件
即使用命令 find -name study 就可找到
在用户主目录下查找并列举出来:
find study -name test.c -exec ls -l {} \;
2.按照文件权限查找文件
使用命令:find -perm + 权限值
例如:
查找到并执行相应的操作:例如列举出来
find ~/study -perm 664 -exec ls -l {} \;
3.按照文件修改时间来查找文件
命令: find -mtime -n 或者 +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前(天数为单位)
例如:find -mtime -3
find -mtime +3
类似的还有下面两个用法相同:
atime:访问时间(accesstime),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;
ctime:变更时间(changetime),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
但是假如我们要找某个特定的时间段对文件进行的改变,该如何操作呢??
举个例子:现在是 2017年3月25日14点十分,我们要系统对2017年3月25日14点00分到14点05分之间对那些文件有修改查找出来,我们可以执行下列命令:
find / -mmin -10 -mmin +5
问题又来了,我们可以找到了在某一段时间所修改过的文件,那么如何删除它呢??
假设现在在/logs..目录中查找更改时间在5日以前的.文件并删除它们:$ find ~/study -type f -mtime -1 -exec rm -f {} \;
4.按照文件属组来查找
命令:find ~/ -user root -exec ls -ld {} \;
相类似的还有按照文件所属的组来查找文件(将user换为group即可)。
5.按照文件类型查找:
b - 块设备文件
d - 目录。
f - 普通文件。
### 类似还有许多…