# 2.7  文件目录管理命令

（1）touch 命令

用于创建空白文件或设置文件的时间，格式为“touch【选项】【文件】”

touch命令的参数及其作用：

|  参数 |        作用        |
| :-: | :--------------: |
|  -a | 仅修改“读取时间”（atime） |
|  -m | 仅修改“修改时间”（mtime） |
|  -d |  同时修改atime与time  |

查看一个文件的修改时间

```
# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1211 May 28 17:52 anaconda-ks.cfg
```

修改文件

```
# echo "Visit the Linuxprobe.com to learn linux skills" >> anaconda-ks.cfg
```

把文件时间改为修改之前的时间

```
# touch -d "2017-05-28 17:52" anaconda-ks.cfg
```

（2）mkdir 命令

用于创建空白的目录，格式为“mkdir【选项】目录”

创建目录

```
# mkdir probelinux
```

-p参数递归创建目录

```
# mkdir -p a/b/c/d/e
```

（3）cp 命令

用于复制文件或目录，格式为“cp【选项】源文件 目标文件”

复制操作分为三种情况：

* 如果目标文件是目录，则会把源文件复制该目录中
* 如果目标文件也是普通文件，这会询问是否覆盖
* 如果目标文件不存在，则执行正常的复制操作

cp命令的参数及其作用：

|  参数 |            作用            |
| :-: | :----------------------: |
|  -  |         保留原始文件的属性        |
|  -d | 若对象为“链接文件”，则保留该“链接文件”的属性 |
|  -r |       递归持续复制（用于目录）       |
|  -i |      若目标文件存在则询问是否覆盖      |
|  -a |    相当于-dpr（p、d、r为上述参数）   |

使用touch创建一个名为install.log的普通空白文件，然后将其复制为一份名为x.log的备份文件，最后再使用ls查看目录中的文件

```
# touch install.log
# cp install.log  x.log
# ls -l
```

（4）mv 命令

用于剪切文件或将文件重命名，如果在同一目录对文件进行剪切操作，其实就是对其进行重命名，格式为“mv【选项】源文件 【目标路径|目标文件名】”

```
mv x.log linux.log
```

（5）rm 命令

用于删除文件或目录，格式为“rm【选项】文件 ”，-f参数为强制删除，删除目录需用-r参数

```
# rm -f linux.log
```

（6）dd 命令

用于按照指定大小和个数的数据块来复制文件或转换文件，格式为“dd【参数】”

dd命令的参数及其作用

|   参数  |      作用     |
| :---: | :---------: |
|   if  |   输入的文件名称   |
|   of  |   删除的文件名称   |
|   bs  |  设置每个“块”的大小 |
| count | 设置要复制“块”的个数 |

从/dev/zero 设备文件中取出一个大小为560MB的数据块，然后保存成名为560\_file的文件，bs和count都是用来指定容量大小，只要能满足需求，可以随意组合搭配

```
# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB) copied, 5.45072 s, 108 MB/s
```

将光驱设备中的光盘制作成ios格式的镜像文件

```
# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
```

（7）file 命令

用于查看文件的类型，格式为“file 文件名”（Linux系统中，一切皆文件）

```
# file anaconda-ks.cfg 
anaconda-ks.cfg: ASCII text
# file /dev/sda
/dev/sda: block special
```
