【发布时间】:2016-07-05 20:36:40
【问题描述】:
我正在尝试压缩一个目录中的一系列文件,但还将压缩文件的内容打印到标准输出。
鉴于我有:
09:00 /tmp/file1.txt
10:00 /tmp/file2.txt
11:00 /tmp/file3.txt
我基本上希望执行gzip -c /tmp/file?.txt > /tmp/compressed.gz,但我也希望在保留原始时间戳的情况下压缩文件:
09:00 /tmp/file1.txt.gz
10:00 /tmp/file2.txt.gz
11:00 /tmp/file3.txt.gz
12:00 /tmp/compressed.gz
有没有什么方法可以用一个命令来做到这一点,而无需:
for i in $(ls /tmp/file?.txt)
do
gzip ${i} && cat ${i}.gz >> /tmp/compressed.gz
done
我想压缩并写入一次磁盘,不想再次敲击磁盘进行读取。
【问题讨论】:
-
gzip .. | tee file.gz可以写入文件和stdout,touch可以设置时间戳。 -
gzip 适用于单个输入文件,因此您需要先使用 tar 之类的东西来制作存档。或者只使用 zip。