我正在编写一个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/

但这不管用。有什么方法可以让我这么做吗?

最佳答案

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

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

但你可能会想添加一些错误检查和其他东西。可能还有一个更复杂的grep表达式来确保你得到你想要的东西。
也不需要提取整个档案。您可以要求tar提取您感兴趣的文件:
tar zxf wimboot.tar.gz "$src_file"

09-06 05:45