从名称中包含版本的文件夹下载,提取和复制文件

时间:2017-03-20 12:37:55

标签: linux bash

我正在编写一个bash脚本,从通用URL下载压缩存档(将自动显示该软件的新版本),将其解压缩并将名为wimboot的文件复制到文件夹

这就是我目前所拥有的:

sudo curl http://git.ipxe.org/releases/wimboot/wimboot-latest.tar.gz -o ./wimboot.tar.gz

sudo tar -zxvf ./wimboot.tar.gz #Extracts into a folder called "wimboot-2.5.2-signed", in it is the file I need ("wimboot").
cd ./wimboot*/
sudo cp wimboot /my-folder/

但这不起作用。有没有一种方法可以让我这样做?

2 个答案:

答案 0 :(得分:0)

您可以向tar询问文件列表(-t选项),然后可以为wimboot grep - 这也应该为您提供该文件的相对路径。一个天真的第一次尝试将是这样的:

src_file=$(tar tf wimboot.tar.gz | grep wimboot)
cp "$src_file" my_folder/

但是你可能想要添加一些错误检查和东西。并且可能是一个更复杂的grep表达式,以确保您获得您追求的一件事。

也没有必要提取整个档案。您只需要tar提取您感兴趣的文件:

tar zxf wimboot.tar.gz "$src_file"

答案 1 :(得分:0)

我已经建立在其他答案之上,这对我有用:

#Create a temporary folder, this folder must be empty!
sudo mkdir temp

#Download the archive and save it in the temporary folder.
sudo curl http://git.ipxe.org/releases/wimboot/wimboot-latest.tar.gz -o ./temp/wimboot-latest.tar.gz

#Extract the downloaded archive to the temporary folder.
sudo tar xvf ./temp/wimboot-latest.tar.gz -C ./temp

#Search for and copy files with the name "wimboot" to the web directory.
sudo find ./temp/ -name 'wimboot' -exec cp {} /var/www/  \;

#Delete the temporary folder.
sudo rm -Rf temp

我不建议将其用于大型档案。