我正在编写一个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/
但这不起作用。有没有一种方法可以让我这样做?
答案 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
我不建议将其用于大型档案。