xz命令 #
xz
命令是一个高效的压缩工具,使用LZMA2算法进行压缩。它提供了比传统的gzip
和bzip2
更高的压缩率,但压缩和解压缩速度较慢。xz
格式在Linux系统中越来越流行,特别是用于软件包分发。
语法 #
xz [选项] [文件...]
常用选项 #
选项 | 描述 |
---|---|
-z, --compress |
强制压缩(默认) |
-d, --decompress, --uncompress |
解压缩 |
-t, --test |
测试压缩文件的完整性 |
-l, --list |
显示压缩文件的信息 |
-k, --keep |
保留原始文件(默认会删除) |
-f, --force |
强制覆盖输出文件或压缩链接 |
-c, --stdout, --to-stdout |
将结果写入标准输出 |
-0 .. -9 |
压缩预设级别(0=最快,9=最高压缩率,默认为6) |
-e, --extreme |
尝试提高压缩率(但会显著增加压缩时间) |
-T, --threads=NUM |
使用最多NUM个线程(默认为1) |
-q, --quiet |
抑制警告和通知 |
-v, --verbose |
显示详细信息 |
-h, --help |
显示帮助信息 |
-V, --version |
显示版本信息 |
常见用法 #
1. 压缩单个文件 #
xz file.txt
这将创建file.txt.xz
并删除原始文件。
2. 压缩文件并保留原始文件 #
xz -k file.txt
3. 解压缩文件 #
xz -d file.txt.xz
或使用unxz
命令:
unxz file.txt.xz
4. 压缩多个文件 #
xz file1.txt file2.txt file3.txt
5. 将压缩结果输出到标准输出 #
xz -c file.txt > file.txt.xz
6. 设置压缩级别 #
# 最快压缩,压缩率最低
xz -0 file.txt
# 最慢压缩,压缩率最高
xz -9 file.txt
7. 使用极限压缩模式 #
xz -e file.txt
8. 使用多线程压缩 #
xz -T 4 file.txt
这会使用4个线程进行压缩。
9. 测试压缩文件的完整性 #
xz -t file.txt.xz
10. 显示压缩文件信息 #
xz -l file.txt.xz
输出示例:
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 8,292 B 14,536 B 0.570 CRC64 file.txt.xz
11. 显示详细信息 #
xz -v file.txt
输出示例:
file.txt (1/1)
100 % 8,292 B / 14,536 B = 0.570
12. 强制覆盖已存在的压缩文件 #
xz -f file.txt
与其他命令结合使用 #
1. 压缩并通过网络传输文件 #
xz -c large_file | ssh user@remote "cat > large_file.xz"
2. 解压缩并查看文件内容 #
xz -dc file.txt.xz | less
或使用xzcat
命令:
xzcat file.txt.xz | less
3. 创建tar归档并使用xz压缩 #
tar -cf - directory/ | xz > directory.tar.xz
或直接使用tar的J选项:
tar -cJf directory.tar.xz directory/
4. 比较两个压缩文件的内容 #
xz -dc file1.xz | diff - <(xz -dc file2.xz)
或使用xzdiff
命令:
xzdiff file1.xz file2.xz
5. 在压缩文件中搜索 #
xz -dc file.txt.xz | grep "pattern"
或使用xzgrep
命令:
xzgrep "pattern" file.txt.xz
相关命令 #
unxz
:解压缩xz文件(等同于xz -d
)xzcat
:查看xz压缩文件的内容(等同于xz -dc
)xzless
:使用less分页查看xz压缩文件的内容xzgrep
:在xz压缩文件中搜索模式xzdiff
:比较xz压缩文件的内容xzmore
:使用more分页查看xz压缩文件的内容
文件扩展名 #
xz压缩文件通常使用以下扩展名:
.xz
:标准xz文件.txz
或.tar.xz
:使用xz压缩的tar归档
实用示例 #
1. 压缩大文件并显示进度 #
pv large_file | xz > large_file.xz
2. 批量压缩所有文本文件 #
find . -name "*.txt" -exec xz {} \;
3. 批量解压缩所有.xz文件 #
find . -name "*.xz" -exec unxz {} \;
4. 压缩并分割大文件 #
xz -c huge_file | split -b 100m - huge_file.xz.part
5. 合并分割的压缩文件并解压缩 #
cat huge_file.xz.part* | unxz > huge_file
6. 比较压缩前后的文件大小 #
ls -l file.txt
xz -k file.txt
ls -l file.txt.xz
7. 压缩标准输入的数据 #
cat file.txt | xz > file.txt.xz
8. 使用最高压缩率和多线程 #
xz -9e -T 4 file.txt
性能比较 #
xz与其他压缩工具的一般性能比较:
工具 | 压缩率 | 压缩速度 | 解压缩速度 |
---|---|---|---|
gzip | 中等 | 快 | 非常快 |
bzip2 | 高 | 慢 | 慢 |
xz | 非常高 | 非常慢 | 中等 |
提示 #
xz
默认会删除原始文件,使用-k
选项可以保留原始文件- 使用
-c
选项可以将压缩结果输出到标准输出,这在管道操作中很有用 - 使用
-t
选项可以检查压缩文件的完整性,而不实际解压缩 - 在脚本中,通常使用
-f
选项忽略错误 - 对于大文件,使用
-T
选项可以显著提高压缩和解压缩速度 xz
只压缩单个文件,不会将多个文件合并为一个压缩文件(这需要先使用tar
)- 对于已经压缩的文件(如JPEG、MP3、ZIP等),
xz
的效果不明显 - 使用
-0
到-9
选项可以在压缩速度和压缩率之间取得平衡 - 使用
-e
选项可以获得更高的压缩率,但会显著增加压缩时间 xz
压缩的文件可以用unxz
、xz -d
或xzcat
解压缩- 在Linux系统中,许多命令都有对应的
xz
前缀版本,如xzcat
、xzless
、xzgrep
等,可以直接操作xz压缩文件