前两天同学用linux做实验后想把实验数据每隔20个步长打包后发给老师,但是不会写shell,所以只能一个一个拉出来复制打包,很是浪费时间。今天我想着写一个shell来解决这个问题。
#!/bin/bash
for((num=20;num<1000;num=num+20))
do
tar -jrvf send.tar.bz2 ${num}.jpg
done
但是在运行shell的时候提示
tar:Cannot update compressed archives
查询后发现是tar命令无法对压缩文件进行更新(如果文件未经过压缩,则可以通过tar -rvf命令实现文件添加)。对于想要通过tar命令更新压缩文件,则只能通过解压压缩文件并更新后重新压缩这一方式实现。
或者,为了更好的解决这个问题,可以使用zip命令,其中-g选项可以将文件添加在已有的压缩文件之后,而非建立新的压缩文件。
#!/bin/bash
for((num=20;num<1000;num=num+20))
do
zip -q send.zip ${num}.jpg
done
在解压时使用unzip命令即可。