图片 1

在linux下面工作

为了完成课程作业,我写了很多 C 语言代码并把它们保存为 /home/user/c/*.c
和 *.h。那么在 UNIX shell 窗口中我如何能通过字符串或者单词(例如函数名
main())文件内容来查找文件呢?

转载自:

图片 1

 

你需要用到以下工具:

在linux下面工作,有些命令能够大大提高效率。本文就向大家介绍find、grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们。本文结构如下:

[a] grep 命令 : 输出匹配模式的行。

  • find命令
    • find命令的一般形式
    • find命令的常用选项及实例
    • find与xargs
  • grep命令
    • grep命令的一般形式
    • grep正则表达式元字符集(基本集)
    • grep命令的常用选项及实例

[b] find 命令: 在目录层次中查找文件。

1、find命令

find命令是一个无处不在命令,是linux中最有用的命令之一。find命令用于:在一个目录(及子目录)中搜索文件,你可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。下面就通过实例来体验下find命令的强大。

输入以下命令:

1.1、find命令的一般形式

man文档中给出的find命令的一般形式为:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…]
[expression]

其实[-H] [-L] [-P] [-D debugopts]
[-Olevel]这几个选项并不常用(至少在我的日常工作中,没有用到过),上面的find命令的常用形式可以简化为:

find [path…] [expression]

path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录

expression:expression可以分为——“-options [-print -exec -ok …]”

  • -options,指定find命令的常用选项,下节详细介绍
  • -print,find命令将匹配的文件输出到标准输出
  • -exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’
    {  } \;,注意{   }和\;之间的空格
    find ./ -size 0 -exec rm {} \; 删除文件大小为零的文件
    (还可以以这样做:rm -i `find ./ -size 0`  或 find ./ -size 0 |
    xargs rm -f &)
    为了用ls -l命令列出所匹配到的文件,可以把ls
    -l命令放在find命令的-exec选项中:find . -type f -exec ls -l {  }
    \;
    在/logs目录中查找更改时间在5日以前的文件并删除它们:find /logs -type
    f -mtime +5 -exec rm {  } \;
  • -ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
    find . -name “*.conf”  -mtime +5 -ok rm {  } \;
    在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示

也有人这样总结find命令的结构:

find start_directory
      options
      criteria_to_match
      action_to_perform_on_results

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章