文件的其他操作命令
文章目录
wc命令 文本内容统计
功能:用于统计指定文本文件的行数、字数或字节数。
语法:wc [选项] 文件名称
选项 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
案例
统计当前系统用户数量
复制,移动文件
复制文件或目录
语法:cp [选项] 源文件 目标文件
选项 | 作用 |
---|---|
-a | 通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝 |
-d | 拷贝时保留 |
-f | 在覆盖已经存在的目标文件时不提示 |
-i | 在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝 |
-p | 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中 |
-r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名 |
移动文件或目录
功能:用于剪切或重命名文件
语法:mv [选项] 源文件名称 目标文件名称
剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作。
案例
跟目下存在 Linux.txt
和 Windows.txt
两个文件
查找文件路径
命令 | 说明 | 示例 |
---|---|---|
whereis | 可以搜索系统命令的可执行文件路径和说明文档 | # whereis ls |
which | which 是搜索系统命令的可执行文件 | #which ls |
locate | 按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db, 可以使用updatedb 命令强制更新数据库。 | #locate ls |
find | 可按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件 | find [path…] [expression] |
find命令
参数 | 作用 |
---|---|
-name | 匹配名称 |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-mtime -n +n | 匹配修改内容的时间(-4指小于等于4天内的文件名;+4,大于等于5天前的文件名;4指前4~5那一天的文件) |
-atime -n +n | 匹配访问文件的时间 |
-ctime -n +n | 匹配修改文件权限的时间 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所属组的文件 |
-type b/d/c/p/l/f | 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-prune | 忽略某个目录 |
-exec… {}\; | 后面可跟用于进一步处理搜索结果的命令 |
按照文件名搜索
语法:find 路径 [选项] 搜索内容
选项:
- -name: 按照文件名搜索
- -iname: 按照文件名搜索,不区分文件名大小写
- -inum: 按照 inode 号搜索
按照文件大小搜索
选项:
-size [+|-]
大小: 按照指定大小搜索文件,这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件
按照修改时间搜索
Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们可以按照时间来搜索文件。
选项:
-atime
[+|-]时间: 按照文件访问时间搜索-mtime
[+|-]时间: 按照文件数据修改时间搜索-ctime
[+|-]时间: 按照文件状态修改时间搜索-newer file
: 把比file修改时间更新的文件列出来
描述:
- -5:代表 5 天内修改的文件。
- 5:代表前 5~6 天那一天修改的文件。
- +5:代表 6 天前修改的文件
按照权限搜索
选项:
-perm
权限模式: 查找文件权限刚好等于“权限模式”的文件-perm
-权限模式: 查找文件权限全部包含“权限模式”的文件-perm
+权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
案例
如果要在整个系统中搜索权限中包括SUID权限的所有文件,只需使用-4000即可:
按照所有者和所属组搜索
选项:
-uid
用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件-gid
组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件-user
用户名: 按照用户名查找所有者是指定用户的文件-group
组名: 按照组名查找所属组是指定用户组的文件-nouser
: 查找没有所有者的文件
按照文件类型搜索
选项:
-type d
: 查找目录-type f
: 查找普通文件-type l
: 查找软链接文件
逻辑运算符
选项:
-a
: and 逻辑与-o
: or 逻辑或-not
: not 逻辑非
压缩和解压缩
zip命令和unzip命令
功能:可以压缩文件和目录
语法:zip FILE
语法: unzip FILE
语法:unzip -d FILE +路径
- 准备文件素材:
- 使用zip压缩文件file1.txt
压缩率为最高压缩file2.txt
2.将当前目录dir1连同目录下文件一起压缩
- 向压缩文件中file1.zip中添加file2. txt文件
4.删除压缩文件中的文件
- 压缩文件时排除某个文件
- 解压文件file2.zip
- 将压缩文件file.zip在指定目录dir1下解压缩
- 查看压缩文件目录,但不解压
gzip命令和gunzip命令
-
使用gzip压缩文件
-
使用gzip压缩目录下文件
#注意: 以上压缩之后原始文件就没有了.
- 压缩但保留原始文件
bzip2命令和bunzip2命令
bzip2、bunzip2是更新的Linux压缩工具,比gzip有着更高的压缩率。
1.bzip2命令
2.bunzip2命令
bzip2、bunzip2示例如下:
# bzip2 -z file1.txt //将file1.txt以bzip2压缩,此时file1.txt变成
file1.txt.bz2
# bzip2 -9 -c file1.txt > file1.txt.bz2 //将file1.txt用最佳的压缩比压缩,并
保留原本的档案
# bzip2 -d file1.txt.bz2 //将file1.txt.bz2解压缩,可用bunzip2取代bzip2 -d
# bunzip2 file1.txt.bz2 //将file1.txt.bz2解压缩
xz命令和unxz命令
- 压缩文件
[root@server ~]# xz file1.txt
[root@server ~]# ls file1.txt.xz
file1.txt.xz
- 压缩dir1目录下文件
[root@server ~]# xz dir1/*
[root@server ~]# ls dir1
fstab.xz file3.txt.xz file4.txt.xz file5.txt.xz
- 查看压缩文件内容
[root@server ~]# xzcat test1.txt.xz
file1
- 解压缩
[root@server ~]# unxz file1.txt.xz
- 解压缩目录dir1下文件
[root@server ~]# xz -d dir1/*
[root@server ~]# ls dir1
fstab file3.txt file4.txt file5.txt
- 不解压,显示压缩文件的内容:zcat、zless、bzcat、bzless。
- zcat、zless**
[root@server ~]# zcat test2.txt.gz
file2
- bzcat、bzless**
# bzcat file.txt.bz2 //在屏幕上显示file.txt.bz2解压缩之后的内容
tar归档命令
语法:tar [选项] 打包文件名 被打包的源文件或目录列表
语法:tar [选项] 打包文件名 [-C 目标文件夹]
选项 | 功能 |
---|---|
-c | 创建.tar格式的包文件 |
-x | 释放.tar格式的包文件 |
-t | 查看包中的文件列表 |
必选项:
选项 | 功能 |
---|---|
-f | 用于指定打包文件名。当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名当与-x选项一起使用时,则释放该选项指定的tar包文件 |
辅助选项:
选项 | 功能 |
---|---|
-v | 表示在命令执行时显示详细的提示信息 |
-p | 打包时保留文件及目录的权限 |
-z | 调用gzip程序,以gzip格式压缩或解压缩文件(.tar.gz) |
-j | 调用bzip2程序,以bzip2格式压缩或解压缩文件(.tar.bz2) |
-J | 使用xz压缩或解压缩文件(.tar.xz),xz的压缩率通常比bzip2更高 |
-C | 和-x选项一起使用,表示释放包时指定释放的目标路径 |
-
创建(非压缩的)包文件
命令:tar cvf 包文件名 要打包的目录或文件名列表
功能:将指定的一个或多个文件或目录备份生成为一个指定的包文件。 -
创建带压缩的包文件
为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式:
命令:tar c[z j|J] f 压缩包文件名 要备份的目录或文件名
-
列出包文件中的文件列表
命令:tar t[v]f 包文件名
-
提取包文件到指定目录
格式:tar x [z j|J] [v]f 包文件名 [ -C 目标位置
]
tar
打包时排除:
--exclude=PATTERN
排除以 PATTERN 指定的文件-X, --exclude-from=FILE
排除 FILE 中列出的模式串
文件上传下载
sftp是一个交互式文件传输命令
它类似于ftp传输协议,属于ssh, 但它进行加密传输,相对FTP来讲有更高的安全性。
如果有服务器的端口不是默认的22,请在sftp后面加-P 端口号。
命令格式:# sftp 用户名@主机地址
案例
-
在Linux上的/root目录创建一个Linux.txt,在windows上创建windows.txt
-
通过sftp的 put命令,将windows上的windows.txt推送到linux上
- 通过sftp的 get命令,将linux上的linux.txt推送到windows上
scp具有和ssh一样的验证机制,从而可以实现2台机器安全的远程拷贝文件
命令格式:scp -P 端口 文件路径 用户名@主机地址:远程目录
rz命令与sz命令
rz命令
rz命令(Receive ZMODEM),使用ZMODEM协议,将本地文件批量上传到远程Linux/Unix服务器,注意不能上传文件夹。
当我们使用虚拟终端软件,如Xshell、SecureCRT或PuTTY来连接远程服务器后,使用rz命令可以上传本地文件到远程服务器。输入rz回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行rz命令的目录。
命令格式: rz [选项] [filelist]
sz命令
sz命令(Send ZMODEM)通过ZMODEM协议,可将多个文件从远程服务器下载到本地。注意不能下载
文件夹,如果下载文件夹,请先打包再下载。
下载多个文件: sz file1 file2 file3
注意:有的机器可能不能使用 rz/sz 命令,这个时候我们就需要安装 lrzsz 软件包
执行以下命令:
#yum install lrzsz -y