Linux常用命令(三)文件操作--文件备份、压缩、定位、查找、阅读

时间:2022-12-10 10:20:01

3 文件备份、压缩、定位、查找、阅读

3.1文件备份、压缩

          在Linux中,常用的文件压缩工具有gzip、bzip2、zip。bzip2是最理想的压缩工具,它提供了最大限度的压缩。zip兼容性好,Windows也支持。 

       命令                                        功能 

 bzip2/bunzip2              扩展名为bz2的压缩/解压缩工具 

 gzip/gunzip                   扩展名为gz的压缩/解压缩工具

 zip/unzip                        扩展名为zip的压缩/解压缩工具

 tar                                   创建备份和归档    


3.1.1 bzip2命令  

          要使用bzip2来压缩文件,在shell提示下输入命令:bzip2 filename       文件即会被压缩,并被保存为filename.bz2。 

          要解压缩文件,输入命令: bunzip2 filename.bz2  则 filename.bz2会被删除,而以filename代替。 

          bzip2 filename.bz2 file1 file2 file3 /usr/work/school  命令把file1、file2、file3以及/usr/work/school目录中的内容压缩起来放入filename.bz2。

    

3.1.2 gzip命令

         要使用gzip来压缩文件,输入命令:gzip filename 文件即会被压缩,并被保存为filename.gz。 

         要解压缩文件,输入命令:gunzip filename.gz filename.gz会被删除,而以filename代替。 

        gzip -r filename.gz file1 file2 file3 /usr/work/school 命令把file1、file2、file3以及/usr/work/school目录中的内容压缩起来放入filename.gz。


3.1.3 zip命令  

         zip命令的使用方法同gzip。   


3.1.4 tar命令 

        tar命令最早是用来做磁带备份的,但是由于硬盘容量越来越大,因此现在主要用这个命令来备份所有的文件。

        tar这个命令把大量的文件和目录打包成一个文件。 

 -c          创建一个新归档 

 -f           当与-c选项一起使用时,创建的tar文件使用该选项指定的文件名;

              当与-x选项一起使用时,则解除该选项指定的归档

 -t           显示包括在tar文件中的文件列表 

 -v          显示文件的归档进度

 -x          从归档中抽取文件

 -z          使用gzip压缩tar文件

 -j           使用bzip2压缩tar文件  

例:

tar -cvf /home/abc.tar /home/abc               只打包,不压缩

tar -zcvf /home/abc.tar.gz /home/abc        打包,并用gzip压缩

tar -jcvf /home/abc.tar.bz2 /home/abc      打包,并用bzip2压缩

当然,如果想解压缩,就直接替换上面的命令  tar -cvf  / tar -zcvf  / tar -jcvf 中的“c” 换成“x” 就可以了。


      要创建一个tar文件,输入命令:tar –cvf filename.tar directory/file /home/mine 上面的命令将directory/file、/home/mine放入归档文件中。

      要列出tar文件的内容,输入命令:tar –tvf filename.tar 

      要抽取tar文件的命令,输入命令:tar –xvf filename.tar  这个命令不会删除tar文件,但会把解除归档的内容复制到当前工作目录下,并保留归档文件所使用的任何目录结构。

      要扩展并解除归档bzip tar文件,输入命令:tar –xjvf filename.tbz  

      要创建一个用tar和gzip归档并压缩的文件,使用-z选项:tar –czvf filename.tgz file  如果使用gunzip命令解压filename.tgz文件,则filename.tgz会被删除,以filename.tar代替。


3.2文件定位、查找

        选项                                                           含义  

       Which                  依序从path环境变量所列的目录中找出command的位置,并显示完整路径的名称

       whereis               找出特定程序的可执行文件、源代码文件以及manpage的路径 

       find                      按条件搜索,并执行一定的动作。

       locate                  带记忆的文件搜索

       updatedb           更新slocate的索引数据库   


 3.2.1 which 

          语法  which command

          说明  依序从path环境变量所列的目录中找出command的位置,并显示完整路径的名称。在找到第一个符合条件的程序文件时,就立刻停止搜索,省略其余未搜索目录。 

          范例:

                 找出ls命令的程序文件的位置:which ls  ,

                系统输出:/usr/bin/ls   

 

3.2.2 whereis  

          语法  whereis [option] name 

          说明  找出特定程序的可执行文件、源代码文件以及manpage的路径。你所提供的name会被先除去前置的路径以及任何.ext形式的扩展名。 

                     whereis 只会在标准的Linux目录中进行搜索。

                     -b                              只搜索可执行文件

                     -m                             只搜索manpage

                     -s                              只搜索源代码文件 

                     -B directory             更改或限定搜索可执行的文件的目录

                     -M directory            更改或限定搜索manpage的目录

                     -S directory            更改或限定搜索源代码文件的目录


3.2.3 find  

         语法  find paths expression [action

        说明  以paths为搜索起点逐层往下找出每一个符合expression条件的文件,并对该文件执行action所代表的动作。

        expression是搜索条件,它由一个代表匹配项目的选项以及一个代表匹配模式的参数构成。

        action是处理动作,它有一个代表“处理方式”的选项以及一个操作参数构成。若不指定action,则默认动作是显示出文件名。  

       常用的搜索条件

        -name pattern 

        -path pattern

        -lname pattern  

            找出名称、路径名称或符号链接的目标匹配pattern模式的文件。

             pattern可以包含shell的文件名通配符,路径是相对于搜索起点的。 

       常见处理动作

              -print  显示出文件的相对路径(相对于搜索起点)。

              -exec cmd /;  执行指定的shell命令。若cmd含有任何shell特殊字符,则他们之前都必须加上/符号,以免shell立刻执行他们。

              在cmd里,可以用”{}”符号(包括双引号)表示   find所找出的文件。 


3.2.4 locate  

       语法  locate patterns  

      说明  第一次执行locate时,它会建立一个索引数据库,当往后再次执行时,它便从索引数据库中迅速找出文件的位置。

     locate很适合用来反复搜索很少变动的目录树,但是对于刚改名的旧文件以及新建的文件,locate就找不到了,除非重建数据库。 


3.2.5 updatedb  

     语法  updatedb [option]  

     说明  更新slocate的索引数据库。 

     选项  -e directories  略过directories所列的目录。

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录

 find / -user user1 搜索属于用户 'user1' 的文件和目录 

find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 

find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件

find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 

find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 

find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 

locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令

whereis halt 显示一个二进制文件、源码或man的位置

which halt 显示一个二进制文件或可执行文件的完整路径


3.3 文件阅读 
        head     查看文件的开头部分
        tail         查看文件结尾的10行  
        less       一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息 
        more     一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息    
3.3.1 head命令               head命令可以用来查看文件的开头部分。              此命令的格式是:                    head 文件名  默认设置,它只查看文件的前10行。但可以通过指定一个数字选项来改变要显示的行数,命令如下:                              head –20 文件名  这个命令将会查看文件的前20行。    
3.3.2 tail命令              tail命令和head命令恰恰相反。             使用tail命令,可以查看文件结尾的10行。这有助于查看日志文件的最后10行来阅读重要的系统信息。还可以使用tail观察日志文件更新的过程。             使用-f选项,tail会自动实时地把打开文件中的新信息显示到屏幕上。                     例如,要活跃地观察/var/log/messages,以根用户身份在shell下输入以下命令: tail –f /var/log/messages      3.3.3 less命令             less允许使用箭头来前后移动。与more命令相似。   3.3.4 more命令             more和less的主要区别是,less允许使用箭头来前后移动,而more使用空格键和b键来前后移动。            使用ls和more来列举/etc目录下的内容: ls –al /etc | more            要使用more在文本文件中搜索关键字,按/键并输入命令搜索条目:/foo 使用空格键来先前翻阅页码。按q键退出。            more命令标准格式为: more [选项] [fileNames]                      -num    一次显示的行数                      -d          提示使用者,在画面下方显示[Press space to continue, q to quit.],如果使用者按错键,则会显示[Press h for instructions.]                    -l            取消遇见特殊字元^L(送纸字元)时会暂停的功能                    -f            计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)                     -p           不以卷动的方式显示每一页,而是先清除萤幕后再显示内容                    -c           跟-p相似,不同的是先显示内容再清除其他旧资料                    -s           当遇到有连续两行以上的空白行,就代换为一行的空白行                    -u           不显示下引号(根据环境变数TERM指定的terminal而有所不同)                     +/           在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示                    +num    从第num行开始显示  fileNames  欲显示内容的档案,可为复数个数                    例如:  more -s testfile 逐页显示testfile之档案内容,如有连续两行以上空白行则以一行空白行显示。                                    more +20 testfile 从第20行开始显示testfile之档案内容。