6.文件及文件内容操作的命令使用
作者:码农 | 发布时间:
Linux的文件类型
- Linux的文件类型大致可分为:
- 普通文件:用于存放数据、程序等信息的文件。
- 目录文件:是由文件系统中一个目录所包含的目录项组成的文件。
- 链接文件:又称符号链接文件, 用于不同目录下文件的共享。实际上它指向另一个文件。
- 设备文件:用于与I/O设备提供连接的一种文件,分为
- 块设备文件:表示磁盘、光盘等
- 字符设备文件:联系着按照字符进行操作的终端、键盘等设备。
- 管道文件:主要用于在进程间传递数据。
- 套接字文件 :套接字(socket)文件通常用于网络数据连接。

文件操作命令的使用
1.新建空文件或更新已有文件或目录的修改日期——touch命令
命令格式: touch [选项] 文件或目录名列表
- 功能:
若指定的文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的日期和时间。
若指定的文件不存在,则以指定的文件名创建空文件
- 选项:
|
选项 |
功能 |
|
-d yyyymmdd |
把文件的存取或修改时间改为 yyyy年mm月dd日。 |
|
-a |
只把文件的存取时间改为当前时间。 |
|
-m |
只把文件的修改时间改为当前时间。 |
[root@dyzx ~]#touch f1 f2 f3
[root@dyzx ~]#touch -d 20180604 f1
2.复制(copy)文件或目录——cp命令
功能:目录或文件的复制。
命令格式: cp [选项] 源文件 目标文件
|
选项 |
功能 |
|
-a |
通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录 |
|
-d |
拷贝时保留链接。 |
|
-f |
在覆盖已经存在的目标文件时不提示。 |
|
-i |
在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。 |
|
-p |
除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 |
|
-r |
若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。 |
|
-l |
不作拷贝,只是链接文件。 |
[root@dyzx ~]# cp /etc/hosts ~/f1
[root@dyzx ~]# cp -r /etc/java/ dir2/bak
3.移动(move)文件或目录——mv命令
命令格式: mv [选项] 源目录或文件名 目标目录或文件名
- 选项:
mv命令的选项与cp命令的选项类似,特有的选项有:
-b——移动后源文件或目录不删除,效果相当于复制。
- ⑴ 移动文件或目录
若源路径与目标路径不同,则移动目录或文件。
[root@dyzx ~]# mv f1 dir1 //将当前目录下的f1文件移到当前目录下的dir1子目录下
- ⑵ 更名文件或目录
若路径相同,仅文件名或目录名不相同,则更名文件或目录。
[root@dyzx ~]# mv f2 f2.txt //将当前目录下的f2文件更名为f2.txt
4.删除(remove)文件或目录——rm命令
格式: rm [选项] 文件或目录名及路径
- 功能:删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,以实现删除多个文件或目录。
- 选项:
|
选项 |
功能 |
|
-f |
在覆盖已经存在的目标文件时不提示。 |
|
-i |
在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。 |
|
-r |
递归删除整个目录树。 |
- 例如:若要直接删除/root/mysoft目录树,则实现命令为:
[root@dyzx ~]# rm -ir dir2/bak
rm:是否进入目录"dir2/bak"? y
rm:是否进入目录"dir2/bak/java"?y
……
5.为文件或目录建立链接(Link)——ln命令
|
比较 |
硬链接 |
符号链接(软链接) |
|
不 同 点 |
使用不带选项-s的ln命令创建 |
使用带选项-s的ln命令创建 |
|
只能在与源文件相同的文件系统、分区和挂载设备上创建 |
可跨越不同的文件系统、分区和挂载设备创建 |
|
|
只能针对文件创建硬链接,不能针对目录 |
针对文件和目录均可建立软链接 |
|
|
具有硬链接关系的两个文件名指向的是硬盘上的同一块存储空间 |
一个文件(或目录)指向另外一个文件(或目录)的文件名(或目录名),类似于Windows系统中的快捷方式 |
|
|
删除硬链接的任何一方文件后,另一方文件仍然有效 |
删除源文件或目录后,软链接文件或目录无效 |
|
|
相同点 |
对任何一方的内容进行修改都会影响到另一方 |
|
|
链接文件都不会将源文件复制一份,只会占用非常少量的用于存储链接信息的存储空间 |
||
命令格式: ln [选项] 被链接的源文件或目录 链接文件或目标目录
- 选项:
-s——建立符号链接(软链接),不加该选项时建立的链接为硬链接。
-f——删除已经存在目标文件与源文件之间的链接关系。
-i——交互式地删除目标文件与源文件之间的链接关系。
- 在当前目录下f3文件写入内容
[root@dyzx ~]# echo 'This is file!'>f3
- 在/tmp目录下创建f3的硬链接文件test1
[root@dyzx ~]# ln f3 /tmp/test1
- 在/tmp目录下创建f3的符号链接文件test2
[root@dyzx ~]# ln -s f3 /tmp/test2
[root@dyzx ~]# ll f3 /tmp/test1 /tmp/test2
-rw-r--r--. 2 root root 14 5月 5 18:46 f3
-rw-r--r--. 2 root root 14 5月 5 18:46 /tmp/test1
lrwxrwxrwx. 1 root root 2 5月 5 18:47 /tmp/test2 -> f3
6.查找文件或目录——find命令
命令格式: find [搜索的目录] [查找条件表达式]
“查找条件表达式”主要有如下几种类型:
|
选项 |
功能 |
|
-name 文件名 |
查找指定名称的文件。文件名中可使用“*”及“?”通配符 |
|
-user 用户名 |
查找属于指定用户的文件 |
|
-group 组名 |
查找属于指定组的文件 |
|
-type 文件类型符 |
查找指定类型的文件。文件类型符有:f(普通文件)、d(目录)、b(块设备文件)、c(字符设备文件)、l(符号链接文件)、p(管道文件)等 |
|
-size [+|-]n[k|M|G] |
根据文件的大小查找文件。其中“n”是文件的大小,符号“+n”表示查找大小大于n的文件; “-n”表示查找大小小于n的文件;k、M、G分别表示文件单位中的千字节、兆字节和千兆字节 |
|
-perm 权限值 |
根据文件的权限查找文件。其中“权限值”是以八进制的形式表示的访问权限(文件权限的有关概念和表示方法请参见项目4中的介绍) |
|
需要同时使用多个查找条件时,各表达式之间可以使用逻辑运算符“-a”、”-o”,分别表示而且(and)、或者(or) |
|
- 在/etc/目录下查找文件名以“.conf”结尾的文件:
[root@dyzx ~]# find /etc -name "*.conf"
- 在计算机上查找由root用户和mail组拥有的文件:
[root@dyzx ~]# find / -user root -group mail
- 在/boot目录中查找大小大于2MB且文件名以“vm”开头的文件:
[root@dyzx ~]# find /boot -size +2M -a -name "vm*"
文件内容操作命令的使用
1.查看文本文件的内容——cat命令
命令格式:cat [选项] 文件名列表
说明:文件名可使用通配符
- 常用选项:
-n——对输出内容中的所有行标注行号。
-b——对输出内容中的非空行标注行号。
- 举例:
[root@dyzx ~]# cat /etc/os-release //显示/etc/os-release文件的内容(系统的发行版本)
[root@dyzx ~]# cat /proc/filesystems //查看本系统所能支持的文件系统类型
2.分页查看文件内容——more和less命令
命令格式: more | less [选项] 文件名
- 常用选项:
-数字——仅适用于more命令,用来指定分页显示时每页的行数。
+num——指定从文件的第num行开始显示。
-c——从顶部清屏然后显示文件内容。
-N——仅适用于less命令,其作用是在每行前添加输出行号。
- 交互操作方法:
按Enter键向下逐行滚动
按空格键向下翻一屏、按b键向上翻一屏
文件末尾时more会自动退出,less 按q键退出
[root@dyzx ~]#more /etc/idmapd.conf //以分页方式显示install.log文件的内容
⒊查看文件开头或末尾的部分内容——head和tail命令
命令格式: head | tail [选项] 文件名
- 常用选项有:
-num——指定需要显示文件多少行的内容,若不指定,默认只显示十行。
-f——使tail不停地去读取和显示文件最新的内容, 以监视文件内容的变化。这样有实时监视的效果。
[root@dyzx ~]#head /etc/idmapd.conf //显示文件的前10行内容
[root@dyzx ~]# tail -20 /etc/passwd //显示文件的后20行内容
tail命令更多的用于查看系统日志文件,以便于观察重要的系统消息,特别是结合使用-f选项,tail会自动实时地把打开文件中的新消息显示到屏幕上,从而跟踪日志文件末尾的内容变化,直至按【Ctrl+C】键终止显示和跟踪。
[root@dyzx ~]# tail -f /var/log/messages
4.检索、过滤文件内容——grep命令
功能:在指定的文件中查找并显示含有指定字符串的行。
命令格式:grep [选项] 要查找的字符串或条件表达式 被查找的文件名
- 选项:
-i——查找时忽略大小写
-v——反转查找,输出与查找条件不相符的行
- 在grep命令中,可以直接指定关键字串作为查找条件,也可以使用复杂的条件表达式,例如:字符“^”表示行的开始;字符“$”表示行的结尾;如果查找的字符串中带有空格,可以用单引号或双引号括起来。又如: "^read"表示以read开始;"read$"表示以read结束;"^$"表示空行。
[root@dyzx ~]# grep ftp /etc/passwd //在文件passwd中查找包含“ftp”的行
[root@dyzx ~]# grep "^user1$" /etc/passwd //在文件中搜素只含“user1”5个字符的行