在Linux下对文件和目录的操作是学习linux的基础,文件的操作无非就是增删改查等等。对于目录的操作也是对目录的增删改查以及修改目录属性等操作。在了解目录管理前得先了解目录的结构。linux下的目录是树型结构,所有的目录都从根(/)开始,其他的文件系统以挂载的方式挂载到目录上去进行使用。访问目录时有相对路径和绝对路径之分。

     相对路径:路径的写法不是由根写起的,而是在当前路径的基础之上的。例如:例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man

     绝对路径:路径从根写起,例如:/usr/local


1.文件与目录管理常用命令

     ls / cd / cp / mv /pwd /rm / rmdir / chgrp /chown /chmod / find / ln /          mkdir / whereis / which / file / touch / locate / dd / updatedb / rename

  接下来我将总结这些命令的常用选项

    1.1  ls 用来显示目标列表,在Linux中是使用率较高的命令。
           -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不

会列出);

          -A:显示除影藏文件“.”和“..”以外的所有文件列表; 

       

           -C:多列显示输出结果。这是默认选项; 

 

           -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列; 

 

           -c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据


是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状


态改变时间;        

 

       -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而


不显示其所指向的目录列表; 

 

        -i:显示文件索引节点号(inode)。一个索引节点代表一个文件; --file-


type:与“

 

          -F”选项的功能相同,但是不显示“*”; 

  

         -k:以KB(千字节)为单位显示文件大小; 


          -l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件


名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修


改时间等; 


          -m:用“,”号区隔每个文件和目录的名称;水平输出文件列表;


          -r:以文件名反序排列并输出目录内容列表; 


          -s:显示文件和目录的大小,以区块为单位; 

 

          -t:用文件和目录的更改时间排序; 


          -R:递归处理,将指定目录下的所有文件及子目录一并处理; 


          --full-time:列出完整的日期与时间;


          --color[=WHEN]:使用不同的颜色高亮显示不同类型的。        

          -F:在每个输出项后追加文件的类型标识符,可用于按照特殊字符对文件进

行分类
           具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符

号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,

不输出任何标识符;


  
 1.2  cd   用来切换工作目录。 

               cd 进入用户主目录;


               cd ~ 进入用户主目录; 


               cd - 返回进入此目录之前所在的目录; 


               cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思); 


               cd ../.. 返回上两级目录; 


               cd !$ 把上个命令的参数作为cd参数使用

   1.3 cp  复制命令 

         -a:此参数的效果和同时指定"-dpR"参数相同; 


         -i:(默认选项)覆盖既有文件之前先询问用户; 


         -f:强行复制文件或目录,不论目标文件或目录是否已存在;


         -p:保留源文件或目录的属性;


         -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;


         -l:对源文件建立硬连接,而非复制文件;


         -s:对源文件建立符号连接,而非复制文件;


         -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文

件或目录连接的原始文件或目录;  


         -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互

对应的目标文件并不存在时,才复制文件;


         -b:覆盖已存在的文件目标前将目标文件备份; 


         -v:详细显示命令执行的操作。
   
   1.4 mv 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。

           -i:(默认)交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标


目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标


文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。


        -b:当文件存在时,覆盖前,为其创建一个备份;

 

      -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目

录;  


        -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。


  1.5  rm  可以删除一个目录中的一个或多个文件或目录,也可以将某个目录


及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接


文件,而原有文件保持不变。

     -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;


      -f:强制删除文件或目录;


      -i:删除已有文件或目录之前先询问用户; 


      -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理; 


      -v:显示指令的详细执行过程。


  1.6  chgrp  用来改变文件或目录所属的用户组。该命令用来改变指定文件所


属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名


可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集


合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的


组。


      -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处


理; 


      -f或--quiet或——silent:不显示错误信息;


      -h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关

文件;


      -v或——verbose:显示指令执行过程;

 

    --reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参

考文件或目录的所属群组相同;


    1.7  chown  
改变某个文件或目录的所有者和所属的组,该命令可以向某个


用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户组可


以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含


通配符。


     -f或--quite或——silent:不显示错误信息;


      -h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关

文件;


      -R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;


      -v或——version:显示指令执行过程;


      --dereference:效果和“-h”参数相同;  


      --reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全

部设成和参考文件或目录的拥有者与所属群组相同; 

  1.8  chmod 用来变更文件或目录的权限。在UNIX系统家族里,文件或目录


权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可


供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文


字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权


限,其改变会作用在被连接的原始文件。


   权限范围的表示法如下: 


       u User,即文件或目录的拥有者;


       g Group,即文件或目录的所属群组;


       o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范

围; 


       a All,即全部的用户,包含拥有者,所属群组以及其他用户; 


       r 读取权限,数字代号为“4”; 


       w 写入权限,数字代号为“2”; 


       x 执行或切换权限,数字代号为“1”;


       - 不具任何权限,数字代号为“0”; 


       s 特殊功能说明:变更文件或目录的权限。

     -f或--quiet或——silent:不显示错误信息;


      -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;


      -v或——verbose:显示指令执行过程;


      --reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和

参考文件或目录的所属群组相同; 


      <权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置; 


      <权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;


      <权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

  1.9  mkdir 建立目录/文件夹

           -m<目录属性> 设置目录属性
           -p 建立父目录,确定目录是否存在,不存在则建立
           -parenls 建立父目录
           -v 显示详细的处理信息


   1.10  whereis 查找文件/查看命令路径

              -b   定位可执行文件。

              -m   定位帮助文件。

              -s   定位源代码文件。

              -u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。   

              -B   指定搜索可执行文件的路径。

             -M   指定搜索帮助文件的路径。

              -S   指定搜索源代码文件的路径。

                -f 只显示文件的真实名称


   1.11  file - 确定文件类型 

               -b     不输出文件名 (简要模式)

               -z     试图查看压缩文件内部信息.

               -L     (在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像 ls(1) 命令的like-named 选项.


     1.12  touch 用来更新文件或目录的时间,不存在的文件将会被创建为空文件,除非使用-c 或-h 选项。  如果文件名为"-"则特殊处理,更改与标准输出相关的文件的访问时间。 

             长选项必须使用的参数对于短选项时也是必需使用的。

              -a              只更改访问时间

              -m             只更改修改时间  

             -c, --no-create       不创建任何文件

             -d, --date=字符串     使用指定字符串表示时间替代当前时间  

              -r, --reference=文件  使用指定文件的时间属性替代当前时间  

              -t STAMP              使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当--time=WORD           使用WORD 指定的时间:access、atime、use 都等于 -a选项的效果,而modify、mtime 等于-m 选项的效果     

 

  1.13  rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式

          -n    操作预览,在不更改文件名称情况下,显示执行后的结果

          -f    强制执行  

 【常用通配符说明】

            ?    表示一个任意字符

            *    表示一个或一串任意字符 -------------------------------------------------

 【常用正则表达式符号说明】

           ^    匹配输入的开始位置

           $    匹配输入的结尾

            .    匹配除换行符外的任意字符

           +    匹配前一个字符一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z"

           [a-z]    表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。      

           [^m-z]    否定的字符区间。与不在指定区间内的字符匹配。


  1.14  updatedb命令用来创建或更新slocate命令所必需的数据库文件。updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入slocate数据库文件中。 补充说明:slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。 

        -o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件; 

        -U<目录>:更新指定目录的slocate数据库;  -v:显示执行的详细过程。


  1.15 dd转换和拷贝文件

          当进行非强制的转换的时候,使用指定的输入和输出块大小拷贝文件 (默认是从标准输入到标准输出。)
            它每次从输入读取指定大小的一个块(默认是512字节)。 如果使用 bs=bytes 选项,并且没有转换,除了指定 sync, noerror, 或 notrunc 之外, 那么dd将把全部读到的数据(可以比请求读的少) 写到独立的输出块去。 这个输出块的长度和读到的数据 完全一样,除非指定使用 sync(同步) 转换,那样的话,数据结尾处将追加NUL字符(或空格,见下)。
            其他情况下,输入的时候每次读一个块,然后处理,并将 输出结果收集起来,最后写到指定大小的数据块中去。最 终的输出块可能会比指定的大小短一些。


        if=file     从 file 中读而不是标准输入。

       of=file     写到 file 里去而不是标准输出。除非指定 conv=notrunc ,否则, dd 将把 file 截为O字节(或由 seek= 选项指定的大小) 

       ibs=bytes     一次读 bytes 字节。默认是512。

       obs=bytes     一次写 bytes 字节。默认是512。 

       bs=bytes     一次读和写 bytes 字节。这将覆盖 ibs 和 obs 设定的值(并且,设定 bs 不等于同时将 ibs 和 obs 设为同一个值,至少在 只使用 sync, noerror 或 notrunc 转换时是这样的。因为bs规定,每个输入块都应作为单独 的数据块拷贝到输出,而不把较短的块组合到一起)。 

      count=blocks     只拷贝输入文件的前 blocks 块(每块的大小为 ibs-byte 字节),而不是全部内容,直到文件末尾。  conv=转换[,转换]...     将文件按 转换 参数指定的方式转换(在lq,rq两边没有空格)。