weidagang2046的专栏

物格而后知致
随笔 - 8, 文章 - 409, 评论 - 101, 引用 - 0
数据加载中……

使用find搜索文件

可以使用 find 命令在整个目录及其子目录下搜索符合特定准则的文件。然后,可以在找到的文件中执行命令。

 

查找符合某种模式的文件

虽然 find 的语法较为复杂,但它有助于提高使用 HP-UX 的效率。此命令功能强大而且灵活。但是运行速度较慢,搜索多个目录时尤其如此。

假定要显示当前目录及其子目录下所有以 d 开头的文件,请输入:

find(1)

$ find . -name 'd*'

命令中的点 (.) 会使 find 搜索当前目录及其子目录。文件名后的 -name 选项或文件名模式(在这种情况下为 d*)告知 find 搜索所有符合该模式的文件。在本示例中,find 将搜索所有以 d 开头的文件名。

注意,d* 要用单引号括起来 ('d*')。如果在 find 命令中使用文件名模式,必须用单引号将其括起来,以便 shell 可以对其进行正确地解释。

 

查找晚于某个文件创建日期的文件

假定您想显示所有在某个文件创建日期之后修改过的文件。要显示 /home/leslie 目录及其子目录下所有晚于 myfile 创建日期的文件,请输入:

$ find /home/leslie -newer myfile

本示例可以理解为:在目录 /home/leslie 及其子目录下,查找所有在 myfile 创建日期之后修改过的文件。(要确定文件的上次修改日期,请使用 ll 命令。)

 

在文件中运行命令

可以在使用 find 命令查找到的文件中执行命令。假定您想删除当前目录及其子目录下所有扩展名为 .tmp 的文件。请输入:

$ find . -name '*.tmp' -exec rm {} \;

本示例查找当前目录及其子目录下所有扩展名为 .tmp 的文件,并将其显示在屏幕上,然后将其删除。-exec 选项会导致以下命令 (rm) 的执行。花括号 {} 代表使用 find 命令找到的文件。结束 exec 字符串的分号之前应添加一个反斜线 (\;)。

 

使用逻辑运算符

find 的语法中包括逻辑布尔运算符:NOT、AND 和 OR。

要查找不符合特定模式的文件,请使用 NOT 逻辑运算符,即感叹号 (!)。使用此运算符之后,必须使用选项定义文件属性,如文件名。然后,将找到具有指定属性的文件。

例如,要查找 /tmp 下所有属于 leslie 的文件,请使用以下命令:

$ find /tmp \( ! -user leslie \)

\ 避免了 shell 将圆括号视为特殊字符的可能性。

要查找具有两个不同属性的文件,请使用 AND 逻辑运算符(表达式 -a 表达式)。例如,要查找 / 下所有属于 leslie 的目录,请使用以下命令:

$ find / \( -type d -a -user leslie \)

要查找具有其中一个或两个属性的文件,请使用 OR 逻辑运算符(表达式 -o 表达式)。例如,要删除一周以来从未访问过的以 .o 结尾或名为 a.out 的所有文件,请使用以下命令:

$find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \;
 

更多信息

有关使用 find 命令的详细信息,请参阅 find(1) 联机帮助页。

from: http://docs.hp.com/zh_cn/5187-2211/ch02s18.html

posted on 2005-11-28 13:33 weidagang2046 阅读(756) 评论(0)  编辑  收藏 所属分类: Linux


只有注册用户登录后才能发表评论。


网站导航: