相关文章推荐
冷冷的青蛙  ·  cmake error file ...·  2 年前    · 
爱笑的热带鱼  ·  java - Selenium - ...·  2 年前    · 
坐怀不乱的作业本  ·  java - Maven Jsoup ...·  2 年前    · 

在Linux中使用curl命令(Shell脚本)从URL下载多个文件到一个特定的路径。

0 人关注

URL返回以逗号分隔的文件列表。

URL : http://sometimesdownload.com/list_of_files

To get list of files

curl -0 http://sometimesdownload.com/list_of_files

上述curl命令的输出/列表返回。

file1.csv","file2.csv","file3.csv"...."filen.csv"]

如何在linux中一次性下载所有文件到/tmp/downloaded_files目录下的指定路径,并在下载后删除文件。文件的文件名应与原始文件相同。

CURL GET 以获得文件,下载文件,然后在下载后使用以下方法删除文件 CURL DELETE .

文件可以像这样下载。

http://sometimesdownload.com/list_of_files/file_name

curl -o http://sometimesdownload.com/list_of_files/file1.csv

curl -o http://sometimesdownload.com/list_of_files/file2.csv

curl -o http://sometimesdownload.com/list_of_files/file3.csv

2 个评论
什么意思? 在单次运行中 ?你的意思是 "使用一个curl请求 "吗?我不认为 curl 会提供这个功能。
这意味着执行一次shell脚本...在for循环或任何其他...
java
linux
bash
shell
curl
Kamal Chopra
Kamal Chopra
发布于 2022-10-03
3 个回答
ControlAltDel
ControlAltDel
发布于 2022-10-03
0 人赞同

你可以在Java中不使用curl,但如果你想使用curl,你会想使用Runnable.exec或ProcessBuilder。见 用空格向ProcessBuilder传递多个参数 以此为例

user20126052
user20126052
发布于 2022-10-03
0 人赞同

这可以通过以下方式进行

for i in $(curl http://sometimesdownload.com/list_of_files | jq -c '.[]'); then
    # GET file
    curl -O --output-dir /tmp/downloaded_files http://sometimesdownload.com/"$i"
    # DELETE file
    # However this is mostly not working straightforward and need tuning 
    # as no enough information here about how the files are hosted and 
    # configured by the remote server 
    curl -X DELETE http://sometimesdownload.com/"$i"

替换代码1】是jq中的紧凑输出选项,从json数组中获得计划文本输出。

$ echo '["file1.csv","file2.csv","file3.csv"]' | jq -c '.[]'
"file1.csv"
"file2.csv"
"file3.csv"
    
FariZ
FariZ
发布于 2022-10-03
0 人赞同

你可以使用下面的脚本。由于列表的语法在BASH中是不同的,你必须转换为BASH语法。[abc,bca] 到 (abc bca)

然后你可以一个一个地去扔文件,通过CURL下载。

这里是脚本的例子,我相信你可以根据你的环境来修正它。

bashParse() {
    listData=$1
    #validateData
    finalData=()
    echo ${listData} | grep ^"\[" > /dev/null && beginScope=0 || beginScope=1
    echo ${listData} | grep "\]$" > /dev/null && endScope=0   || endScope=1
    # build our List BASH stntax    
    if [ $beginScope -eq 0 ] && [ $endScope -eq 0 ] ; then
        # Here I will remove [ and ], also replace last SPACE with nothing => sed
        declare -a finalData=($(echo $listData|tr '\"' ' '| tr -d '[]'| tr ',' ' '))
    # Download files one by one by CURL
    for i in "${finalData[@]}" ; do
       echo "curl://<link>/$i"