将文件从 URL 解压到硬盘吗?

将文件从 URL 解压到硬盘吗?

如果我有文件的 URL,如何直接从终端解压缩?

例如 :

unzip www.test.com/test.zip destination-folder-on-my-pc

答案1

如果unzip坚持管道和过滤器架构风格Unix 的特性,那么人们期望能够通过将 wget 的输出通过管道传输到 unzip 的输入中来实现这一点:

wget -O - http://www.test.com/test.zip | (cd destination-folder && unzip -)

其中,后面的破折号-O表示标准输出,后面的破折号unzip表示标准输入,右边的括号表示在正确的目录中启动一个子 shell。

但是 ZIP 格式将其内容索引存储在文件末尾,unzip需要先读取该索引才能开始解压。因此,与gzipet al 相反,它无法一次性解压一个流。

作为一种解决方法,您需要一个临时文件:

wget -O /tmp/z.$$ http://www.test.com/test.zip && 
   (cd destination-folder && unzip /tmp/z.$$)

其中它们$$仅用于生成非冲突的数字。

您可以使用 unzip 选项,而不是运行子 shell -d。为了更加安全,请清理临时文件:

wget -O /tmp/z.$$ http://www.test.com/test.zip && 
   unzip -d destination-folder /tmp/z.$$ &&
   rm /tmp/z.$$

答案2

您需要多个步骤:

  1. 进入目标文件夹

    cd destination
    
  2. 下载文件

    wget www.test.com/test.zip
    
  3. 提取文件

    unzip test.zip
    

要仅使用一个命令,请使用脚本:

#!/bin/bash
wget -P "/tmp" "$1"
filename=$(awk -F'/' {print $NF})
unzip "$filename" -d "$2"
rm "/tmp/$filename"
  • 打开编辑器创建一个名为的新文件unzip_by_url,并将其放入~/bin/usr/bin/local

    nano unzip_by_url
    
  • 并粘贴上面的代码。

  • 保存并关闭

  • 使文件可执行

    chmod +x /path/to/file/unzip_by_url
    
  • 现在使用以下命令启动脚本:

    unzip_by_url www.test.com/test.zip destination-folder-on-my-pc
    

相关内容