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