linux文件目录操作的相关命令

mkdir rmdir tree touch stat cp mv rm

mkdir

功能说明:建立空目录

语 法:mkdir [-p][--help][--v][-m <目录属性>][目录名称]

补充说明:mkdir可建立目录并同时设置目录的权限。

选项:

  • -m<目录属性> 建立目录时同时设置目录的权限。

    [root@VM_18_121_centos ~]# mkdir -m 775 qin
    [root@VM_18_121_centos ~]# ll
    drwxrwxr-x  2 root root 4096 Jul 29 10:45 qin
  • -p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录

    [root@VM_18_121_centos ~]# mkdir -p ./1/12/15/258
    root@VM_18_121_centos ~]# tree 1/
    1/
    `-- 12
        `-- 15
            `-- 258
    
    3 directories, 0 files

一般用法
mkdir 文件名


rmdir (remove directory)

功能说明:删除目录。

语  法:rmdir [-p][--help][目录...]

补充说明:当有空目录要删除时,可使用rmdir指令。

选 项:

  • -p 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。

    root@VM_18_121_centos ~]# tree 1/
    1/
    `-- 12
        `-- 15
            `-- 258
    [root@VM_18_121_centos ~]# rmdir -p 1/12/15/258/
    [root@VM_18_121_centos ~]# tree 1
    1 [error opening dir]
    
    0 directories, 0 files

    注意:只能删除空目录


tree

功能说明:以树状图列出目录的内容。

语  法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]

补充说明:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

选 项:

  • -L level:指定显示的层级:例如-L 2 显示两层层级

  • -C 在文件和目录清单加上色彩,便于区分各种类型。

  • -d 只显示目录名称而非内容。

    • -f 在每个文件或目录之前,显示完整的相对路径名称。

    • -D 列出文件或目录的更改时间。

    • -p 列出权限标示。

    • -s 列出文件或目录大小。

    • -t 用文件和目录的更改时间排序。

          [root@VM_18_121_centos /]#  tree -CdL 1
          .
          |-bin -> usr/bin
          |-boot
          |-data
          |-dev
          |-etc
          |-home
          |-lib -> usr/lib
          [root@VM_18_121_centos /]# ll
          total 68
          lrwxrwxrwx.  1 root root     7 Apr 21 15:00 bin -> usr/bin
          dr-xr-xr-x.  4 root root  4096 Jul 27 11:34 boot
          drwxr-xr-x   2 root root  4096 Apr 21 22:18 data
          drwxr-xr-x  18 root root  2860 Jul 27 11:33 dev
          -rw-r--r--   1 root root    39 Jul 27 11:41 qiu

stat

功能说明:显示inode内容。

语  法:stat [文件或目录]

补充说明:stat以文字的格式来显示inode的内容。(显示文件源数据)

    [root@localhost ~]# stat acd 
      文件:"acd"
      大小:12         块:8          IO 块:4096   普通文件
    设备:803h/2051d   Inode:141620596   硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2016-07-28 14:18:22.969424559 +0800
    最近更改:2016-07-28 14:18:00.772595552 +0800
    最近改动:2016-07-28 14:18:00.772595552 +0800
    创建时间:-

更改是指文件内数据的改变,改动是指文件元数据的改变


touch

功能说明:新建文件,改变文件或目录时间戳。

语  法:touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间>][--help]   [--version][文件或目录...] 或 touch [-acfm][--help][--version][日期时间][文件或目录...]

补充说明:使用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间。

选 项:

  • -a或--time=atime或--time=access或--time=use  只更改存取时间。

  • -c或--no-create  指定的文件路径不存在时不建立任何文件。

  • -d <时间日期>  使用指定的日期时间,而非现在的时间。

  •  -m或--time=mtime或--time=modify  只更改变动时间。

  • -r<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。

  • -t<日期时间>  使用指定的日期时间,而非现在的时间。格式 [[CC]YY]MMDDhhmm[.ss]

    第一种用法:直接创建指定文件

        [root@localhost ~]# touch aaa
        [root@localhost ~]# ll aaa
        -rw-r--r--. 1 root root 0 7月  29 12:35 aaa

    第二种用法:如果文件存在则不改变文件内容,只改变文件的所有时间戳为当前时间

        [root@localhost ~]# stat acd
          文件:"acd"
          大小:8          块:8          IO 块:4096   普通文件
        设备:803h/2051d   Inode:141620596   硬链接:1
        权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
        环境:unconfined_u:object_r:admin_home_t:s0
        最近访问:2016-07-29 12:29:07.347575849 +0800
        最近更改:2016-07-29 12:29:07.347575849 +0800
        最近改动:2016-07-29 12:29:07.347575849 +0800
        创建时间:-
        [root@localhost ~]# touch acd 
        [root@localhost ~]# stat acd
          文件:"acd"
          大小:8          块:8          IO 块:4096   普通文件
        设备:803h/2051d   Inode:141620596   硬链接:1
        权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
        环境:unconfined_u:object_r:admin_home_t:s0
        最近访问:2016-07-29 12:30:20.045015827 +0800
        最近更改:2016-07-29 12:30:20.045015827 +0800
        最近改动:2016-07-29 12:30:20.045015827 +0800
        创建时间:-
        [root@localhost ~]# cat acd 
        sdasdsa
  1. 不带任何参数

2.修改指定的时间戳为当前时间 -a和-m

    [root@localhost ~]# touch -m acd 
    [root@localhost ~]# stat acd
      文件:"acd"
      大小:8          块:8          IO 块:4096   普通文件
    设备:803h/2051d   Inode:141620596   硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2016-07-29 12:46:03.353749084 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改动:2016-07-29 12:46:55.286349022 +0800
    创建时间:-
    [root@localhost ~]# touch -a acd
    [root@localhost ~]# stat acd 
      文件:"acd"
      大小:8          块:8          IO 块:4096   普通文件
    设备:803h/2051d   Inode:141620596   硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2016-07-29 12:49:23.479207425 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改动:2016-07-29 12:49:23.479207425 +0800
    创建时间:-

3.修改文件的时间戳为指定时间 -t(可以和-a -m结合使用)

-t 选项语法组成 : [[CC]YY]MMDDhhmm [.SS] CC - 年份的前两位 YY - 年份的后两位 MM - 月份 [01-12] DD - 日期 [01-31] hh - 时 [00-23] mm - 分 [00-59] SS - 秒 [00-61]

    [root@localhost ~]# touch -at 100001120958.27 acd 
    [root@localhost ~]# stat acd 
      文件:"acd"
      大小:8          块:8          IO 块:4096   普通文件
    设备:803h/2051d   Inode:141620596   硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:1000-01-12 09:58:27.000000000 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改动:2016-07-29 12:51:40.923148630 +0800
    创建时间:-

4.以某个文件为参考文件或目录修改另一个文件 -r

    [root@localhost ~]# stat aaa
      文件:"aaa"
      大小:0          块:0          IO 块:4096   普通空文件
    设备:803h/2051d   Inode:141620555   硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2016-07-29 12:35:52.925451496 +0800
    最近更改:2016-07-29 12:35:52.925451496 +0800
    最近改动:2016-07-29 12:35:52.925451496 +0800
    创建时间:-
    [root@localhost ~]# stat aaa
      文件:"aaa"
      大小:0          块:0          IO 块:4096   普通空文件
    设备:803h/2051d   Inode:141620555   硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:1000-01-12 09:58:27.000000000 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改动:2016-07-29 13:03:42.748588076 +0800
    创建时间:-

特殊

touch支持通配符?如果原本有aaa acd asd三个文件若用touch a??则 不会创建名a??的文件,而是把aaa acd asd 这三个文件的时间戳刷新,但如果用touch a????则会因为匹配不到文件而创建一个a????的文件

    -rw-r--r--. 1 root root    0 7月  29 12:35 aaa
    -rw-r--r--. 1 root root    8 7月  29 12:46 acd
    -rw-r--r--. 1 root root    0 7月  28 14:16 asd
    [root@localhost ~]# touch a??
    [root@localhost ~]# ll
    总用量 20
    -rw-r--r--. 1 root root    0 7月  29 13:06 aaa
    -rw-r--r--. 1 root root    8 7月  29 13:06 acd
    -rw-r--r--. 1 root root    0 7月  29 13:06 asd
    [root@localhost ~]# touch a????
    [root@localhost ~]# ll
    总用量 20
    -rw-r--r--. 1 root root    0 7月  29 12:16 12345678
    -rw-r--r--. 1 root root    0 7月  29 12:15 1234567890
    -rw-r--r--. 1 root root    0 7月  29 12:44 201401120958.27
    -rw-r--r--. 1 root root    0 7月  29 13:10 a????
    -rw-r--r--. 1 root root    0 7月  29 13:06 aaa
    -rw-r--r--. 1 root root    8 7月  29 13:06 acd
    -rw-------. 1 root root 1521 7月  20 00:53 anaconda-ks.cfg
    -rw-r--r--. 1 root root    0 7月  29 13:06 asd

cp (copy)

cp也可以改名

文件复制的原理,首先在目标地址创建一个空文件,然后把要复制的文件内容以数据流的方式流入这个空文件,使这个文件越来越大最后一样。复制的只是文件里面的数据,元数据不发生改变。

功能说明:复制文件或目录。

语  法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>[源文件或目录][目标文件或目录] [目的目录]

补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息

选 项:

  • -d或--no-dereference  当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录

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

  • -i或--interactive  覆盖既有文件之前先询问用户。

  • -p或--preserve  保留源文件或目录的属性。

  • -v或--verbose  显示指令执行过程。

  • -r 或-R 递归处理,将指定目录下的文件与子目录一并处理。

  • -a或--archive  此参数的效果和同时指定"-dpR"参数相同。

1.无参数复制

直接复制:只能复制文件到指定目录
    [root@localhost etc]# cp /etc/issue /testdir/
    [root@localhost etc]# ll /testdir/
    总用量 8
    -rw-r--r--. 1 root root 23 7月  29 13:33 issue
    -rw-r--r--. 1 root root 44 7月  29 13:27 system-release

复制软连接,会把直接复制软连接所指向的文件,并且改名为软连接的名字
    [root@localhost etc]# cp system-release /testdir/
    [root@localhost etc]# ll /testdir/
    总用量 4
    -rw-r--r--. 1 root root 44 7月  29 13:27 system-release
    [root@localhost etc]# ll /etc/system-release
    lrwxrwxrwx. 1 root root 14 7月  20 00:09 /etc/system-release -> centos-release
    [root@localhost etc]# ll /etc/centos-release
    -rw-r--r--. 1 root root 44 7月  26 09:46 /etc/centos-release

2.复制目录 -r

    [root@localhost etc]# cp -r /etc/yum /testdir/
    [root@localhost etc]# ll /testdir/
    总用量 12
    -rw-r--r--. 1 root root   23 7月  29 13:33 issue
    -rw-r--r--. 1 root root   44 7月  29 13:27 system-release
    drwxr-xr-x. 6 root root 4096 7月  29 13:39 yum

3.-d或--no-dereference  当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录

    [root@localhost etc]# cp -d /etc/system-release /testdir/
    [root@localhost etc]# ll /testdir/
    总用量 0
    lrwxrwxrwx. 1 root root 14 7月  29 13:43 system-release -> centos-release  //只复制了软连接文件

4.其他linux文件目录操作的相关命令_命令


mv (move)

功能说明:移动或更名现有的文件或目录。

语  法:mv [-bfiuv][源文件或目录][目标文件或目录]

补充说明:mv可移动文件或目录,或是更改文件或目录的名称。

选 项:

  • -b或--backup  若需覆盖文件,则覆盖前先行备份。

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

  • i 或--interactive  覆盖前先行询问用户。

  • -v或--verbose  执行时显示详细的信息。

用法:1.移动某文件至指定目录

    [root@localhost etc]# cp /etc/issue /testdir/
    [root@localhost etc]# ll /testdir/
    总用量 4
    -rw-r--r--. 1 root root 23 7月  29 13:56 issue

2.移动文件或目录并改名

    [root@localhost etc]# ls /root/
    201401120958.27  acd    file1            issue                 视频  下载
    [root@localhost etc]# mv /root/issue  /root/qzx123
    [root@localhost etc]# ls /root/
    201401120958.27  acd    file1            qzx123                视频  下载

3.覆盖前的备份 -b

    [root@localhost etc]# mv -bi /testdir/issue /root/
    mv:是否覆盖"/root/issue"? y
    [root@localhost etc]# ls /root/
     issue~ issue

rm (remove)

功能说明:删除文件或目录。

语  法:rm [-dfirv][--help][--version][文件或目录...]

补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。

选 项:

  • -d或--directory  直接把欲删除的目录的硬连接数据删成0,删除该目录。

  • -f或--force  强制删除文件或目录。

  • -i或--interactive  删除既有文件或目录之前先询问用户。

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

  • -v或--verbose  显示指令执行过程。

一般执行方式: rm -rf /PATH/TO/DIR (危险操作,请完全确认再后执行)

    [root@localhost ~]# ls /testdir/
    issue  yum
    [root@localhost ~]# rm -r /testdir/*
    rm:是否删除普通文件 "/testdir/issue"?
    rm:是否进入目录"/testdir/yum"? 
    [root@localhost ~]# ls /testdir/
    issue  yum
    [root@localhost ~]# rm -rf /testdir/*
    [root@localhost ~]# ls /testdir/
    [root@localhost ~]#

默认

[root@localhost ~]# alias rm
alias rm='rm -i'

且默认回车为否不删除 不进入 ”n“

注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录:(模拟回收站)