0%

find的高级用法

find的高级用法

在linux命令中用find可以做很多事。

inux的终端上,没有windows的搜索那样好用的图形界面工具,但find命令确是很强大的。

比如按名字查找一个文件,可以用 find / -name targetfilename 。 唉,如果只知道名字,不知道地点,这样也不失为一个野蛮有效的方法。

按时间查找也有参数 -atime 访问时间 -ctime 改变状态的时间 -mtime修改的时间。但要注意,这里的时间是以24小时为单位的。

查看man手册后使用,你会很迷惑: -mtime n: Files data was last modified n*24 hours ago. 字面上的理解是最后一次修改发生在n个24小时以前的文件,但实际上

find ./ -mtime 0:返回最近24小时内修改过的文件。

find ./ -mtime 1 : 返回的是前48~24小时修改过的文件。而不是48小时以内修改过的文件。

那怎么返回10天内修改过的文件?find还可以支持表达式关系运算,所以可以把最近几天的数据一天天的加起来:

find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……虽然比较土,但也算是个方法了。

还有没有更好的方法,我也想知道。

另外, -mmin参数-cmin / - amin也是类似的。

QQ群:397745473

Find应用实例

查找最近30分钟修改的当前目录下的.php文件

1
find . -name '*.php' -mmin -30

查找最近24小时修改的当前目录下的.php文件

1
find . -name '*.php' -mtime 0

查找最近24小时修改的当前目录下的.php文件,并列出详细信息

1
find . -name '*.inc' -mtime 0 -ls

查找当前目录下,最近24-48小时修改过的常规文件。

1
find . -type f -mtime 1

查找当前目录下,最近1天前修改过的常规文件。

1
find . -type f -mtime +1

·find path -option [ -print ] [ -exec -ok command ] {} ;

find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

#-print 将查找到的文件输出到标准输出
#-exec command {} ; —–将查到的文件执行command操作,{} 和 ;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户

例:find . -name .svn | xargs rm -rf

参考: https://www.cnblogs.com/hechunhua/p/4860544.html

QQ群:397745473

欢迎关注我的其它发布渠道