Directory
解壓縮並重命名 zip 中的特定目錄 — 一次操作
假設我有
archive.zip
一個名為的目錄myDir
(它實際上是其中唯一的目錄),並且該目錄包含一個名為x
.
unzip archive.zip -d ~/
帶來:~/myDir/x
mv ~/myDir ~/myRenamedDir
,帶來:~/myRenamedDir/x
有沒有辦法
myDir
通過提取重命名我的,所以結果會~/myRenamedDir/x
直接,不需要mv
?
考慮使用
unzip
’s-j
選項:
-j
垃圾路徑。檔案的目錄結構不會重新創建;所有文件都存放在解壓目錄中(預設為目前目錄)。
來源:解壓(1)
unzip -d ~/myRenameDir/ -j <FILE>
Anthon 編寫了一個很好的腳本,用於將 zip 文件轉換為 tar 文件。通過一些修改,您可以使用將 zip 轉換為 tar 並將 tar 文件通過管道發送到
tar
,如果您有 GNUtar
,則可以使用該--transform
標誌重命名。修改:
w|
用作模式以便我們可以寫入標準輸出,並sys.stdout
用作打開tar文件的文件對象:#! /usr/bin/env python """zip2tar """ import sys import os from zipfile import ZipFile import tarfile import time def main(ifn): with ZipFile(ifn) as zipf: with tarfile.open(fileobj=sys.stdin, mode='w|') as tarf: for zip_info in zipf.infolist(): #print zip_info.filename, zip_info.file_size tar_info = tarfile.TarInfo(name=zip_info.filename) tar_info.size = zip_info.file_size tar_info.mtime = time.mktime(list(zip_info.date_time) + [-1, -1, -1]) # zip files don't have permissions, so # make everything executable for now tar_info.mode=0755 tarf.addfile( tarinfo=tar_info, fileobj=zipf.open(zip_info.filename) ) main(sys.argv[1])
將其另存為 ,
zip2tar.py
使其可執行,您可以執行以下操作:zip2tar.py archive.zip | tar x -C ~ --transform 's/^myDir/myRenameDir/'
或者如果
~/myRenameDir
已經存在:zip2tar.py archive.zip | tar x -C ~/myRenameDir --strip-components=1