Newsflash

为了适应用户的使用,本站重新规划;由于时间上的关系,决定采用现成的CMS系统Joomla,同时根据我们的用户群体特点选用了常用的Joomla插件并进行优化。历时1个月的工作,今日正式上线。

 
powered_by.png, 1 kB
使用 find 搜索文件 输出PDF 打印 电子邮件
用户评分: / 1
好 
采编: Boban   
2007-11-22
Linux 下find命令的使用技巧。

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

2.18.1 查找符合某种模式的文件

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

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

find(1)

$ find . -name 'd*'

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

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

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

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

$ find /home/leslie -newer myfile

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

2.18.3 在文件中运行命令

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

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

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

2.18.4 使用逻辑运算符

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 {} ;

2.18.4.1 更多信息

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

最后更新 ( 2007-11-22 )
 
< 上一篇   下一篇 >
© 2000-2009 中文PHP网 版权所有 所有内容均由本站制作,未经许可,不得转载!
站长信箱:webmaster [at] 21php.com 沪ICP备05002508号
Joomla! is Free Software released under the GNU/GPL License.