Shell 如何在使用wget下载文件时单独使用文件名保存文件

Shell 如何在使用wget下载文件时单独使用文件名保存文件,shell,azure,azure-storage,wget,Shell,Azure,Azure Storage,Wget,当我按如下方式进行wget时,文件名为sample.txt?st=2017-07-19T06%3A00%3A00Z“ 我不想像下面这样使用,因为它不适合我的场景 wget -O $filename -q "https://sample.blob.core.windows.net/test/sample.txt?st=2017-07-19T06%3A00%3A00Z" 但我想在使用wget命令下载时将文件名另存为sample.txt。如何实现这一点?如果我的理解是正确的,下面的脚本应该可以工作

当我按如下方式进行wget时,文件名为sample.txt?st=2017-07-19T06%3A00%3A00Z“

我不想像下面这样使用,因为它不适合我的场景

wget -O $filename -q "https://sample.blob.core.windows.net/test/sample.txt?st=2017-07-19T06%3A00%3A00Z"

但我想在使用wget命令下载时将文件名另存为sample.txt。如何实现这一点?

如果我的理解是正确的,下面的脚本应该可以工作

##set your blob url
url="https://sample.blob.core.windows.net/test/sample.txt?st=2017-07-19T06%3A00%3A00Z"
filename="${url%%[?]*}"; filename="${filename##*/}"

wget -O $filename -q $url

注意:如果您使用此脚本,您的文件名不能包含

如果我的理解是正确的,下面的脚本应该可以工作

##set your blob url
url="https://sample.blob.core.windows.net/test/sample.txt?st=2017-07-19T06%3A00%3A00Z"
filename="${url%%[?]*}"; filename="${filename##*/}"

wget -O $filename -q $url

注意:如果您使用此脚本,您的文件名不能包含

文件末尾的内容称为查询,可能会有所帮助。@anubhava由于我下载了更多的文件,所以它不适合我。我不想将每个文件名都作为静态文件提供。请参考我的问题。您是否提供了要下载的URL和文件名我可以很容易地从该URL派生。文件末尾的内容称为查询,可能会有帮助。@anubhava这不适合我,因为我下载了更多的文件。我不想将每个文件名都作为静态文件提供。请参考我的问题。您提供了任何要下载的URL,并且文件名可以很容易地从该URL派生。这些外部进程是不必要的。您可以只使用shell:
filename=“${url%%[?]*}”;filename=“${filename###*/}”
非常感谢,它可以工作。我会更新我的答案。@Walter MSFT这个=>file=$(basename“$url”);filename=$(echo$file | cut-f1-d”?)。这也有效。哪一个更好?@karan我想它们都对你有效。这取决于你的喜好。但对他们来说,你的脚本名不能包含
,因为它取决于
来获取文件名。@Walter MSFT好的。好的。这些外部进程不是必需的。你可以使用shell:
文件名=“${url%%[?]*}”;文件名=”${filename##*/}“
非常感谢,它能工作。我会更新我的答案。@Walter MSFT这个=>文件=$(basename“$url”);文件名=$(echo$文件| cut-f1-d”?)。这也有效。哪一个更好?@karan我想它们都对你有效。这取决于你的喜好。但对它们来说,你的脚本名不能包含
,因为它取决于
获得文件名。@Walter MSFT Ok。好的。