項目需求:從遠處拷貝壓縮文件到本地后並解壓,解壓后的部分文件拷貝並重命名到其他目錄
需求拆分:1.拷貝文件 2.解壓文件 3.批量重命名
步驟一查看:http://www.cnblogs.com/ddddemo/p/5670534.html
步驟三查看:http://www.cnblogs.com/ddddemo/p/5729099.html
現在需要實現步驟二,解壓文件。
第一種方案,tar zxvf $dir/XXX.tgz -C $targetDir/
這種會直接將文件解壓到$targetDir目錄下,因為要把XXX.tgz目錄下的所有文件都解壓,所以耗時最長
第二種方案,如果需要的部分文件含有一定的規律,可以使用* 或? 代表共同部分進行解壓 或者 指出要解壓的文件一一列出
tar zxvf $dir/XXX.tgz AABBCCDD*EEFF -C $targetDir/
其中 AABBCCDD*EEFF為指定要解壓的文件,舉例具體說明:
我有文件life_20160801_log.tgz
需要解壓到dir=/data/ddddemo/log/ 目錄下
其中tgz的完全解壓后的目錄結構如下:
life_20160801_log
|--am
|--relax_20160801_0001.log
|--relax_20160801_0101.log
|--relax_20160801_0201.log
|--relax_20160801_0301.log
|--relax_20160801_0401.log
|--relax_20160801_0501.log
|--relax_20160801_0601.log
|--relax_20160801_0701.log
|--work_20160801_0801.log
|--work_20160801_0901.log
|--work_20160801_1001.log
|--work_20160801_1101.log
|--work_20160801_1201.log
|--pm
|--work_20160801_1301.log
|--work_20160801_1401.log
|--work_20160801_1501.log
|--work_20160801_1601.log
|--work_20160801_1701.log
我們需要獲取到 am下的work*日志
那么我們有兩種實現方法
1.
tar -C $targetDir/ -zxvf $dir/life_20160801_log.tgz life_20160801_log/am/work_20160801_*
2.
tar -C $targetDir/ -zxvf $dir/life_20160801_log.tgz life_20160801_log/am/work_20160801_0801.log life_20160801_log/am/work_20160801_0901.log life_20160801_log/am/work_20160801_1001.log life_20160801_log/am/work_20160801_1101.log life_20160801_log/am/work_20160801_1201.log
相對來說,方法2稍微快一點 如果對時間效率要求不是非常高,可以使用第一種,代碼簡潔一些