我有这样的30个tgz文件:
live-3.0.10-20101031.tgz live-3.0.4-20101005.tgz
当我提取他们将被提取到“活”文件夹(即:tar xvzf活-3.0.10-20101031.tgz将解压到“活”文件夹我想有一个小脚本,将提取所有文件最老到最新的“活”文件夹,我希望新的文件被复制到旧文件这是我做的,但我不是,如果它是好的…你可以让我知道你的想法?
#!/bin/bash for f in live*.tgz; do echo $f tar xzvf $f & done
试试这个,你错过了; 分开两个命令。 也可能不需要& ,你可以用它来并行化tar调用,但是如果你有多个文件(它们将争夺I / O和CPU),它可能会造成更多的伤害。
为了正确sorting文件列表,你可以使用sort -V ,考虑到版本号(在bash上的*通配符或普通sort会在版本4之前列出版本10,如1 <4)。 这应该工作:
for f in `ls live*.tgz | sort -V`; do echo $f; tar xzvf $f; done
未testing,表格记忆:
ls -1rt live*tgz | xargs tar xvf
说明:
ls -1 – >在一个列表中列出文件 ls -t – >根据修改时间列出文件(最佳创build时间) ls -r – >按相反顺序排列(旧的第一个) 然后这个列表通过pipe道传送到xargs,所以tar把每个文件一个接一个,并且按照你的意愿解开它们,从旧到新。
HTH