Directory

解壓時如何強制 unzip / zip 不創建子目錄?

  • November 27, 2020

根據 zip 文件的創建方式,有時會直接提取所有文件,有時會將文件提取到子目錄中。

如果後者為真,我如何強制unzip命令“忽略”該第一級目錄?

例子:

cd /tmp
wget http://omeka.org/files/omeka-1.5.1.zip
mkdir omeka
unzip omeka-1.5.1.zip -d omeka/
cd omeka/
ll

我得到的是/tmp/omeka/omeka-1.5.1/

total 12
drwxr-xr-x 3 root root 4096 2012-05-08 18:44 ./
drwxrwxrwt 6 root root 4096 2012-05-08 18:44 ../
drwxr-xr-x 5 root root 4096 2012-04-20 14:54 omeka-1.5.1/

我想要的是提取到的文件/tmp/omeka/,(上一級,目錄結構中不包含版本號)

/tmp/omeka/(files)

我知道我可以使用-j“垃圾路徑”選項,但我想保留子目錄結構,而不是頂級目錄結構。我怎樣才能做到這一點?

使用FUSE文件系統,該系統允許您瀏覽諸如目錄之類的檔案,例如AVFS。用於cp將文件解壓縮到您選擇的目錄。

mountavfs
cp -Rp ~/.avfs/tmp/omeka-1.5.1.zip\#/omeka-1.5.1 omeka

由於我們假設存檔中有一個頂級目錄,因此您可以將其縮短為

cp -Rp ~/.avfs/tmp/omeka-1.5.1.zip\#/* omeka

如果您的 zip 文件不包含目錄結構或者您不需要保留它,您可以使用以下命令:

cd /tmp
wget http://omeka.org/files/omeka-1.5.1.zip
unzip -j omeka-1.5.1.zip -d omeka
cd omeka
ll

引用自:https://unix.stackexchange.com/questions/38162