Red Hat Enterprise Linux 6.4网络操作系统详解
上QQ阅读APP看书,第一时间看更新

2.2 任务2 熟练使用文件目录类命令

文件目录类命令是对文件和目录进行各种操作的命令。

2.2.1 子任务1 熟练使用浏览目录类命令

1.使用pwd命令

pwd命令用于显示用户当前所处的目录。如果用户不知道自己当前所处的目录,就必须使用它。例如:

        [root@RHEL6 etc]#pwd
        /etc

2.使用cd命令

cd命令用来在不同的目录中进行切换。用户在登录系统后,会处于用户的家目录($HOME)中,该目录一般以/home开始,后跟用户名,这个目录就是用户的初始登录目录(root用户的家目录为/root)。如果用户想切换到其他的目录中,就可以使用cd命令,后跟想要切换的目录名。例如:

        [root@RHEL6 etc]# cd           //改变目录位置至用户登录时的工作目录
        [root@RHEL6 etc]# cd dir1      //改变目录位置至当前目录下的dir1子目录下
        [root@RHEL6 etc]# cd~          //改变目录位置至用户登录时的工作目录(用户的家目录)
        [root@RHEL6 etc]# cd .. //改变目录位置至当前目录的父目录
        [root@RHEL6 etc]# cd ../user   //改变目录位置至当前目录的父目录下的user子目录下
        [root@RHEL6 etc]# cd /dir1/subdir1  //利用绝对路径表示改变目录到/dir1/subdir1目录下

说明:在Linux系统中,用“.”代表当前目录;用“..”代表当前目录的父目录;用“~”代表用户的个人家目录(主目录)。例如,root用户的个人主目录是/root,则不带任何参数的“cd”命令相当于“cd~”,即将目录切换到用户的家目录。

3.使用ls命令

ls命令用来列出文件或目录信息。该命令的语法为:

        ls  [参数]  [目录或文件]

ls命令的常用参数选项如下。

•-a:显示所有文件,包括以“.”开头的隐藏文件。

•-A:显示指定目录下所有的子目录及文件,包括隐藏文件。但不显示“.”和“..”。

•-c:按文件的修改时间排序。

•-C:分成多列显示各行。

•-d:如果参数是目录,则只显示其名称而不显示其下的各个文件。往往与“-l”选项一起使用,以得到目录的详细信息。

•-l:以长格形式显示文件的详细信息。

•-i:在输出的第一列显示文件的i节点号。

例如:

        [root@RHEL6~]# ls       //列出当前目录下的文件及目录
        [root@RHEL6~]# ls -a    //列出包括以"."开始的隐藏文件在内的所有文件
        [root@RHEL6~]# ls -t    //依照文件最后修改时间的顺序列出文件
        [root@RHEL6~]# ls -F    //列出当前目录下的文件名及其类型。以/结尾表示为目录名,以
                                    * 结尾表示为可执行文件,以@结尾表示为符号连接
        [root@RHEL6~]# ls -l    //列出当前目录下所有文件的权限、所有者、文件大小、修改时间及
                                  名称
        [root@RHEL6~]# ls -lg   //同上,并显示出文件的所有者工作组名
        [root@RHEL6~]# ls -R    //显示出目录下以及其所有子目录的文件名

2.2.2 子任务2 熟练使用浏览文件类命令

1.使用cat命令

cat命令主要用于滚屏显示文件内容或是将多个文件合并成一个文件。该命令的语法为:

        cat  [参数]  文件名

cat命令的常用参数选项如下。

•-b:对输出内容中的非空行标注行号。

•-n:对输出内容中的所有行标注行号。

通常使用cat命令查看文件内容,但是cat命令的输出内容不能够分页显示,要查看超过一屏的文件内容,需要使用more或less等其他命令。如果在cat命令中没有指定参数,则cat会从标准输入(键盘)中获取内容。

例如要查看/soft/file1文件内容的命令为:

    [root@RHEL6~]#cat    /soft/file1

利用cat命令还可以合并多个文件。例如,要把file1和file2文件的内容合并为file3,且file2文件的内容在file1文件的内容前面,则命令为:

        [root@RHEL6~]# cat file2 file1>file3
        //如果file3文件存在,此命令的执行结果会覆盖file3文件中原有内容
        [root@RHEL6~]# cat file2 file1>>file3
        //如果file3文件存在,此命令的执行结果将把file2和file1文件的内容附加到file3文件
        中原有内容的后面

2.使用more命令

在使用cat命令时,如果文件太长,用户只能看到文件的最后一部分。这时可以使用more命令,一页一页地分屏显示文件的内容。more命令通常用于分屏显示文件内容。大部分情况下,可以不加任何参数选项执行more命令查看文件内容,执行more命令后,进入more状态,按Enter键可以向下移动一行,按Space键可以向下移动一页,按q键可以退出more命令。该命令的语法为:

        more  [参数]  文件名

more命令的常用参数选项如下。

•-num:这里的num是一个数字,用来指定分页显示时每页的行数。

•+num:指定从文件的第num行开始显示。

例如:

        [root@RHEL6~]#more file1             //以分页方式查看file1文件的内容
        [root@RHEL6~]#cat file1 |more        //以分页方式查看file1文件的内容

more命令经常在管道中被调用以实现各种命令输出内容的分屏显示。上面的第二个命令就是利用shell的管道功能分屏显示file1文件的内容。关于管道的内容在第三部分中有详细介绍。

3.使用less命令

less命令是more命令的改进版,比more命令的功能强大。more命令只能向下翻页,而less命令可以向下、向上翻页,甚至可以前后左右移动。执行less命令后,进入了less状态,按Enter键可以向下移动一行,按Space键可以向下移动一页,按b键可以向上移动一页,也可以用光标键向前、后、左、右移动,按q键可以退出less命令。

less命令还支持在一个文本文件中进行快速查找。先按下斜杠键“/”,再输入要查找的单词或字符。less命令会在文本文件中进行快速查找,并把找到的第一个搜索目标高亮度显示。如果希望继续查找,就再次按下斜杠键“/”,再按Enter键即可。

less命令的用法与more基本相同,例如:

        [root@RHEL6~]#less/etc/httpd/conf/httpd.conf  //以分页方式查看httpd.conf文件的内容

4.使用head命令

head命令用于显示文件的开头部分,默认情况下只显示文件的前10行内容。该命令的语法为:

        head  [参数]  文件名

head命令的常用参数选项如下。

•-n num:显示指定文件的前num行。

•-c num:显示指定文件的前num个字符。

例如:

        [root@RHEL6~]#head -n 20 /etc/httpd/conf/httpd.conf
                                                          //显示httpd.conf文件的前20行

5.使用tail命令

tail命令用于显示文件的末尾部分,默认情况下只显示文件的末尾10行内容。该命令的语法为:

        tail  [参数]  文件名

tail命令的常用参数选项如下。

•-n num:显示指定文件的末尾num行。

•-c num:显示指定文件的末尾num个字符。

• +num:从第num行开始显示指定文件的内容。

例如:

        [root@RHEL6~]#tail -n 20 /etc/httpd/conf/httpd.conf
                                                        //显示httpd.conf文件的末尾20行

2.2.3 子任务3 熟练使用目录操作类命令

1.使用mkdir命令

mkdir命令用于创建一个目录。该命令的语法为:

        mkdir  [参数]  目录名

上述目录名可以为相对路径,也可以为绝对路径。

mkdir命令的常用参数选项如下。

-p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。例如:

        [root@RHEL6~]#mkdir dir1                        //在当前目录下创建dir1子目录
        [root@RHEL6~]#mkdir -p dir2/subdir2
        //在当前目录的dir2目录中创建subdir2子目录,如果dir2目录不存在则同时创建

2.使用rmdir命令

rmdir命令用于删除空目录。该命令的语法为:

        rmdir  [参数]  目录名

上述目录名可以为相对路径,也可以为绝对路径。但所删除的目录必须为空目录。

rmdir命令的常用参数选项如下。

-p:在删除目录时,一起删除父目录,但父目录中必须没有其他目录及文件。

例如:

        [root@RHEL6~]#rmdir dir1                       //在当前目录下删除dir1空子目录
        [root@RHEL6~]#rmdir -p dir2/subdir2
        //删除当前目录中dir2/subdir2子目录,删除subdir2目录时,如果dir2目录中无其他目录,
        则一起删除

2.2.4 子任务4 熟练使用cp命令

1.cp命令的使用方法

cp命令主要用于文件或目录的复制。该命令的语法为:

        cp  [参数]  源文件  目标文件

cp命令的常用参数选项如下。

•-a:尽可能将文件状态、权限等属性照原状予以复制。

•-f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。

•-i:如果目标文件或目录存在,提示是否覆盖已有的文件。

•-R:递归复制目录,即包含目录下的各级子目录。

2.使用cp命令的范例

复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是-a、-p选项,对于不同身份来说,差异非常大。下面的练习中,有的身份为root,有的身份为一般账号(在这里用bobby这个账号),练习时请特别注意身份的差别。请观察下面的复制练习。

【例2-1】 用root身份,将家目录下的.bashrc复制到/tmp下,并更名为bashrc。

        [root@RHEL6~]# cp  ~/.bashrc /tmp/bashrc
        [root@RHEL6~]# cp  -i~/.bashrc /tmp/bashrc
        cp: overwrite '/tmp/bashrc'? n为不覆盖,y为覆盖
        # 重复做两次动作,由于/tmp底下已经存在bashrc了,加上-i选项后,则在覆盖前会询问使用者
        是否确定,可以按下n或者y来二次确认

【例2-2】 变换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性。

        [root@RHEL6~]# cd    /tmp
        [root@RHEL6 tmp]# cp  /var/log/wtmp.<==复制到当前目录
        [root@RHEL6 tmp]# ls  -l /var/log/wtmp wtmp
        -rw-rw-r--1 root utmp 96384 Sep 24 11:54/var/log/wtmp
        -rw-r--r--1 root root 96384 Sep 24 14:06 wtmp
        # 注意上面的特殊字体,在不加任何选项的情况下,文件的某些属性/权限会改变,这是个很重要的
        特性!还有,连文件建立的时间也不一样了

那如果想要将文件的所有特性都一起复制过来该如何解决?可以加上-a,如下所示。

        [root@RHEL6 tmp]# cp    -a    /var/log/wtmp wtmp_2
        [root@RHEL6 tmp]# ls    -l    /var/log/wtmp wtmp_2
        -rw-rw-r--1 root utmp 96384 Sep 24 11:54/var/log/wtmp
        -rw-rw-r--1 root utmp 96384 Sep 24 11:54 wtmp_2

cp的功能很多,由于我们常常会进行一些数据的复制,所以也会常常用到这个指令。一般来说,如果复制别人的数据(当然,必须要有read的权限)时,总是希望复制到的数据最后是自己的。所以,在预设的条件中,cp的源文件与目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。

举例来说,例2-2中,由于是root的身份,因此复制过来的文件拥有者与群组就改变成为root所有。由于具有这个特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件,例如,密码文件(/etc/shadow)以及一些配置文件,就不能直接以cp来复制,而必须要加上-a或-p等属性。

注意:如果你想要复制文件给其他使用者,也必须要注意到文件的权限(包含读、写、执行以及文件拥有者等),否则,其他人还是无法针对你给的文件进行修改。

【例2-3】 复制/etc/这个目录下的所有内容到/tmp里面。

        [root@RHEL6 tmp]# cp  /etc/  /tmp
        cp:omitting directory'  /etc'  <==如果是目录则不能直接复制,要加上-r的选项
        [root@RHEL6 tmp]# cp  -r  /etc/tmp
        #这里再次强调,-r可以复制目录,但是文件与目录的权限可能会被改变,所以,也可以利用
        『cp  -a  /etc  /tmp』来下达指令,尤其是在备份的情况下!

【例2-4】 若~/.bashrc比/tmp/bashrc文件新时才进行复制操作。

        [root@RHEL6 tmp]# cp  -u  ~/.bashrc  /tmp/bashrc
        #这个-u的特性,是在目标文件与来源文件有差异时,才会复制的。所以,比较常被用于备份的工
        作当中。

分析:使用bobby身份,完整地复制/var/log/wtmp文件到/tmp目录下,并更名为bobby_wtmp。

答案:

        [bobby@www ~]$ cp  -a /var/log/wtmp  /tmp/bobby_wtmp
        [bobby@www ~]$ ls  -l /var/log/wtmp  /tmp/bobby_wtmp

2.2.5 子任务5 熟练使用文件操作类命令

1.使用mv命令

mv命令主要用于文件或目录的移动或改名。该命令的语法为:

        mv  [参数]  源文件或目录    目标文件或目录

mv命令的常用参数选项如下。

•-i:如果目标文件或目录存在时,提示是否覆盖目标文件或目录。

•-f:无论目标文件或目录是否存在,直接覆盖目标文件或目录,不提示。

例如:

    //将当前目录下的testa文件移动到/usr/目录下,文件名不变。
    [root@RHEL6 /]# mv testa /usr/
    //将/usr/testa文件移动到根目录下,移动后的文件名为tt
    [root@RHEL6 /]# mv /usr/testa /tt

2.使用rm命令

rm命令主要用于文件或目录的删除。该命令的语法为:

    rm  [参数]    文件名或目录名

rm命令的常用参数选项如下。

•-i:删除文件或目录时提示用户。

•-f:删除文件或目录时不提示用户。

•-R:递归删除目录,即包含目录下的文件和各级子目录。

例如:

    //删除当前目录下的所有文件,但不删除子目录和隐藏文件。
    [root@RHEL6 test]# rm *
    //删除当前目录下的子目录dir,包含其下的所有文件和子目录,并且提示用户确认
    [root@RHEL6 /]# rm -iR dir

3.touch命令

touch命令用于建立文件或更新文件的修改日期。该命令的语法为:

    touch  [参数]    文件名或目录名

touch命令的常用参数选项如下。

•-d yyyymmdd:把文件的存取或修改时间改为yyyy年mm月dd日。

•-a:只把文件的存取时间改为当前时间。

•-m:只把文件的修改时间改为当前时间。

例如:

    [root@RHEL6 test]# touch aa    //如果当前目录下存在aa文件,则把aa文件的存取和修改
                                  时间改为当前时间,如果不存在aa文件,则新建aa文件
    [root@RHEL6 /]# touch-d 20080808 aa  //将aa文件的存取和修改时间改为2008年8月8日

4.使用diff命令

diff命令用于比较两个文件内容的不同。该命令的语法为:

    diff  [参数]  源文件    目标文件

diff命令的常用参数选项如下。

•-a:将所有的文件当作文本文件处理。

•-b:忽略空格造成的不同。

•-B:忽略空行造成的不同。

•-q:只报告什么地方不同,不报告具体的不同信息。

•-i:忽略大小写的变化。

例如:

        [root@RHEL6 test]# diff  aa.txt  bb.txt    //比较aa.txt文件和bb.txt文件的不同

5.ln命令

ln命令用于建立两个文件之间的链接关系。该命令的语法为:

        ln  [参数]  源文件或目录    链接名

ln命令的常用参数选项如下。

-s:建立符号链接(软链接),不加该参数时建立的链接为硬链接。

两个文件之间的链接关系有两种:一种称为硬链接,这时两个文件名指向的是硬盘上的同一块存储空间,对两个文件中的任何一个文件的内容进行修改都会影响到另一文件。它可以由ln命令不加任何参数建立。

利用ll命令查看aa.txt文件的情况:

        [root@RHEL6 /]# ll aa
        -rw-r--r--  1 root root 0  1月 31 15:06 aa
        [root@RHEL6 /]# cat aa
        this is aa

由上面命令的执行结果可以看出aa文件的链接数为1,文件内容为“this is aa”。

使用ln命令建立aa文件的硬链接bb的方法如下:

        [root@RHEL6 /]# ln aa bb

上述命令产生了bb新文件,它和aa文件建立起了硬链接关系。

        [root@RHEL6  /]# ll aa bb
        -rw-r--r--  2 root root 11  1月 31 15:44 aa
        -rw-r--r--  2 root root 11  1月 31 15:44 bb
        [root@RHEL6 /]# cat bb
        this is aa

可以看出,aa和bb的大小相同,内容相同。再看详细信息的第2行,原来aa文件的链接数为1,说明这块硬盘空间只有aa文件指向,而建立起aa和bb的硬链接关系后,这块硬盘空间就有aa和bb两个文件同时指向它,所以aa和bb的链接数都变为2。

此时,如果修改aa或bb任意一个文件的内容,另外一个文件的内容也将随之变化。如果删除其中一个文件(不管是哪一个),就是删除了该文件和硬盘空间的指向关系,该硬盘空间不会释放,另外一个文件的内容也不会发生改变,但是该文件的链接数会减少一个。

说明:只能对文件建立硬链接,不能对目录建立硬链接。

另外一种链接方式称为符号链接(软链接),是指一个文件指向另外一个文件的文件名。软链接类似于Windows系统中的快捷方式。软链接由ln-s命令建立。

首先查看一下aa文件的信息:

        [root@RHEL6 /]# ll aa
        -rw-r--r--  1 root root 11  1月 31 15:44 aa

创建aa文件的符号链接cc,创建完成后查看aa和cc文件的链接数的变化:

        [root@RHEL6 /]# ln -s aa cc
        [root@RHEL6 /]# ll aa cc
        -rw-r--r--  1 root root 11  1月 31 15:44 aa
        lrwxrwxrwx   1 root root 2  1月 31 16:02 cc ->aa

可以看出cc文件是指向aa文件的一个符号链接。而指向存储aa文件内容的那块硬盘空间的文件仍然只有aa一个文件,cc文件只不过是指向了aa文件名而已。所以aa文件的链接数仍为1。

在利用cat命令查看cc文件的内容时,cat命令在寻找cc的内容时,发现cc是一个符号链接文件,就根据cc记录的文件名找到aa文件,然后将aa文件的内容显示出来。

此时如果删除了cc文件,对aa文件无任何影响,但如果删除了aa文件,那么cc文件就因无法找到aa文件而毫无用处了。

说明:可以对文件或目录建立软链接。

6.使用gzip和gunzip命令

gzip命令用于对文件进行压缩,生成的压缩文件以“.gz”结尾,而gunzip命令是对以“.gz”结尾的文件进行解压缩。该命令的语法为:

        gzip    -v    文件名
        gunzip  -v    文件名

-v参数选项表示显示被压缩文件的压缩比或解压时的信息。

例如:

        [root@RHEL6 /]# gzip -v httpd.conf
        httpd.conf: 65.0%--replaced with httpd.conf.gz
        [root@RHEL6 /]# gunzip -v httpd.conf.gz
        httpd.conf.gz: 65.0%--replaced with httpd.conf

7.使用tar命令

tar是用于文件打包的命令行工具,tar命令可以把一系列的文件归档到一个大文件中,也可以把档案文件解开以恢复数据。总的来说,tar命令主要用于打包和解包。tar命令是Linux系统中常用的备份工具之一。该命令的语法为:

        tar  [参数]  档案文件    文件列表

tar命令的常用参数选项如下。

•-c:生成档案文件。

•-v:列出归档解档的详细过程。

•-f:指定档案文件名称。

•-r:将文件追加到档案文件末尾。

•-z:以gzip格式压缩或解压缩文件。

•-j:以bzip2格式压缩或解压缩文件。

•-d:比较档案与当前目录中的文件。

•-x:解开档案文件。

例如:

        [root@RHEL6/]# tar-cvf yy.tar aa tt    //将当前目录下的aa和tt文件归档为yy.tar
        [root@RHEL6 /]# tar -xvf yy.tar         //从yy.tar档案文件中恢复数据
        [root@RHEL6 /]# tar -czvf yy.tar.gz aa tt
                                        //将当前目录下的aa和tt文件归档并压缩为yy.tar.gz
        [root@RHEL6 /]# tar -xzvf yy.tar.gz     //将yy.tar.gz文件解压缩并恢复数据

8.使用rpm命令

rpm命令主要用于对RPM软件包进行管理。RPM包是Linux的各种发行版本中应用最为广泛的软件包格式之一。学会使用rpm命令对RPM软件包进行管理至关重要。该命令的语法为:

        rpm  [参数]    软件包名

rpm命令的常用参数选项如下。

•-qa:查询系统中安装的所有软件包。

•-q:查询指定的软件包在系统中是否安装。

•-qi:查询系统中已安装软件包的描述信息。

•-ql:查询系统中已安装软件包里所包含的文件列表。

•-qf:查询系统中指定文件所属的软件包。

•-qp:查询RPM包文件中的信息,通常用于在未安装软件包之前了解软件包中的信息。

•-i:用于安装指定的RPM软件包。

•-v:显示较详细的信息。

•-h:以“#”显示进度。

•-e:删除已安装的RPM软件包。

•-U:升级指定的RPM软件包。软件包的版本必须比当前系统中安装的软件包的版本高才能正确升级。如果当前系统中并未安装指定的软件包,则直接安装。

•-F:更新软件包。

例如:

        [root@RHEL6 /]# rpm -qa|more     //显示系统安装的所有软件包列表
        [root@RHEL6 /]# rpm -q httpd      //查询系统是否安装了httpd软件包
        [root@RHEL6 /]# rpm -qi httpd     //查询系统已安装的httpd软件包的描述信息
        [root@RHEL6/]# rpm-ql httpd     //查询系统已安装的httpd软件包里所包含的文件列表
        [root@RHEL6 /]# rpm -qf /etc/passwd  //查询passwd文件所属的软件包
        [root@RHEL6 RPMS]# rpm -ivh httpd-2.0.52-9.ent.i386.rpm
                                          //安装软件包,并以"#"显示安装进度和安装的详细信息
        [root@RHEL6 RPMS]# rpm-Uvh rpm-e httpd-2.2.18-26.el6.x86_64.rpm     //升级软件包
        [root@RHEL6 RPMS]# rpm -e rpm -e httpd-2.2.18-26.el6.x86_64  //卸载httpd软件包

注意:卸载软件包时不加扩展名“.rpm”,如果使用命令“rpm-e rpm-e httpd-2.2.18-26.el6.x86_64-nodeps”,则表示不检查依赖性。

9.使用whereis命令

whereis命令用来寻找命令的可执行文件所在的位置。该命令的语法为:

        whereis  [参数]    命令名称

whereis命令的常用参数选项如下。

•-b:只查找二进制文件。

•-m:只查找命令的联机帮助手册部分。

•-s:只查找源代码文件。

例如:

        //查找命令rpm的位置
        [root@RHEL6~]# whereis rpm
        rpm: /bin/rpm/etc/rpm/usr/lib/rpm/usr/include/rpm/usr/share/man/man8/rpm.8.gz

10.使用whatis命令

whatis命令用于获取命令简介。它从某个程序的使用手册中抽出一行简单的介绍性文件,帮助用户迅速了解这个程序的具体功能。该命令的语法为:

        whatis  命令名称

例如:

        [root@RHEL6~]# whatis ls
        ls               (1) -list directory contents

11.使用find命令

find命令用于文件查找。它的功能非常强大。该命令的语法为:

        find  [路径]    [匹配表达式]

find命令的匹配表达式主要有如下几种类型。

•-name filename:查找指定名称的文件。

•-user username:查找属于指定用户的文件。

•-group grpname:查找属于指定组的文件。

•-print:显示查找结果。

•-size n:查找大小为n块的文件,一块为512B。符号“+n”表示查找大小大于n块的文件;符号“-n”表示查找大小小于n块的文件;符号“nc”表示查找大小为n个字符的文件。

•-inum n:查找索引节点号为n的文件。

•-type:查找指定类型的文件。文件类型有:b(块设备文件)、c(字符设备文件)、d(目录)、p(管道文件)、l(符号链接文件)、f(普通文件)。

•-atime n:查找n天前被访问过的文件。“+n”表示超过n天前被访问的文件;“-n”表示未超过n天前被访问的文件。

•-mtime n:类似于atime,但检查的是文件内容被修改的时间。

•-ctime n:类似于atime,但检查的是文件索引节点被改变的时间。

•-perm mode:查找与给定权限匹配的文件,必须以八进制的形式给出访问权限。

•-newer file:查找比指定文件新的文件,即最后修改时间离现在较近。

•“-exec command{}\; ”:对匹配指定条件的文件执行command命令。

•“-ok command{}\; ”:与exec相同,但执行command命令时请求用户确认。

例如:

    [root@RHEL6~]# find . -type f -exec  ls  -l  {}  \;
    //在当前目录下查找普通文件,并以长格形式显示
    [root@RHEL6~]# find  /logs  -type  f  -mtime 5  -exec  rm  {}  \;
    //在/logs目录中查找修改时间为5天以前的普通文件,并删除。保证/logs目录存在
    [root@RHEL6~]# find  /etc  -name  "*.conf"
    //在/etc/目录下查找文件名以".conf"结尾的文件
    [root@RHEL6~]# find  .-type  f  -perm 755  -exec  ls {}  \;
    //在当前目录下查找权限为755的普通文件并显示

注意:由于find命令在执行过程中将消耗大量资源,建议以后台方式运行。

12.使用grep命令

grep命令用于查找文件中包含有指定字符串的行。该命令的语法为:

    grep  [参数]  要查找的字符串    文件名

grep命令的常用参数选项如下。

•-v:列出不匹配的行。

•-c:对匹配的行计数。

•-l:只显示包含匹配模式的文件名。

•-h:抑制包含匹配模式的文件名的显示。

•-n:每个匹配行只按照相对的行号显示。

•-i:对匹配模式不区分大小写。

在grep命令中,字符“^”表示行的开始,字符“$”表示行的结尾。如果要查找的字符串中带有空格,可以用单引号或双引号括起来。

例如:

        [root@RHEL6~]# grep -2 user1  /etc/passwd
        //在文件passwd中查找包含字符串"user1"的行,如果找到,显示该行及该行前后各2行的内容
        [root@RHEL6~]# grep "^user1$"/etc/passwd
        //在passwd文件中搜索只包含"user1"5个字符的行

提示:grep和find命令的差别在于grep是在文件中搜索满足条件的行,而find是在指定目录下根据文件的相关信息查找满足指定条件的文件。