Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于URL列表和重命名的并行下载_Linux_Wget - Fatal编程技术网

Linux 用于URL列表和重命名的并行下载

Linux 用于URL列表和重命名的并行下载,linux,wget,Linux,Wget,我有一个标签分隔的URL列表和目标文件名,url\u to\u download.txt,例如: first_file.jpg\thttps://www.google.co.il/images/srpr/logo11w.png /subdir_1/second_file.jpg\thttps://www.google.co.il/images/srpr/logo12w.png ... last_file.jpg\thttps://www.google.co.il/images/srpr/logo

我有一个标签分隔的URL列表和目标文件名,
url\u to\u download.txt
,例如:

first_file.jpg\thttps://www.google.co.il/images/srpr/logo11w.png
/subdir_1/second_file.jpg\thttps://www.google.co.il/images/srpr/logo12w.png
...
last_file.jpg\thttps://www.google.co.il/images/srpr/logo99w.png
我想通过几个连接下载它

例如,我可以通过以下方式实现:

cat URL_to_download.txt|xargs-n 1-p 10 wget-nc

我的问题是,如何使文件具有我想要的新名称,以便输出目录具有:

first_file.jpg
/subdir1/second_file.jpg
...
last_file.jpg

我猜这样的事情应该适合你:

#!/bin/bash                                                                                                                                                                       
while read FILENAME URL; do
  wget -nc -O "$FILENAME" "$URL"
done <input.txt
#/bin/bash
读取文件名URL时;做
wget-nc-O“$FILENAME”“$URL”

完成我猜这样的事情应该适合你:

#!/bin/bash                                                                                                                                                                       
while read FILENAME URL; do
  wget -nc -O "$FILENAME" "$URL"
done <input.txt
#/bin/bash
读取文件名URL时;做
wget-nc-O“$FILENAME”“$URL”

完成尝试此命令以同时下载文件:

`cut -f 2 urls_to_download.txt | wget -i -;` 

`cut -f 2 urls_to_download.txt | sed 's/.*\///' | while read f; do mv $f $(cut -f 1 urls_to_download.txt); done`

我找不到使用
wget
选项正确重命名文件的方法,您需要进行修改,以确保
mv
命令中存在该目录。

尝试此命令以同时下载文件:

`cut -f 2 urls_to_download.txt | wget -i -;` 

`cut -f 2 urls_to_download.txt | sed 's/.*\///' | while read f; do mv $f $(cut -f 1 urls_to_download.txt); done`
我找不到使用
wget
选项正确重命名文件的方法,您需要进行修改,以确保
mv
命令中存在该目录

  • 请注意,文件中的文件名使用的是绝对路径。因此,您最好将这些名称重写为相对路径

  • 在shell中,只有使用
    &
    放置流程背景才能使您的工作并行

  • 例如,如果您希望并行,可以执行以下操作:

    #!/bin/bash
    while read FILENAME URL
    do
        wget -nc -O "./$FILENAME" "$URL" &   # So `wget` runs in background
    done < input.txt
    
    然而,这种方法非常简单,它不是控制并行任务数量的最有效和最准确的方法

  • 请注意,文件中的文件名使用的是绝对路径。因此,您最好将这些名称重写为相对路径

  • 在shell中,只有使用
    &
    放置流程背景才能使您的工作并行

  • 例如,如果您希望并行,可以执行以下操作:

    #!/bin/bash
    while read FILENAME URL
    do
        wget -nc -O "./$FILENAME" "$URL" &   # So `wget` runs in background
    done < input.txt
    

    但是,此方法非常简单,因此它不是控制并行任务数量的最有效和最准确的方法。

    只需使用
    wget
    -x
    选项:

    -x
    --强制目录
    与-nd相反的是——创建一个目录层次结构,即使没有创建一个目录层次结构
    否则。例如,wget-x将下载的文件保存到
    fly.srk.fer.hr/robots.txt


    只需使用wget的
    -x
    选项:

    -x
    --强制目录
    与-nd相反的是——创建一个目录层次结构,即使没有创建一个目录层次结构
    否则。例如,wget-x将下载的文件保存到
    fly.srk.fer.hr/robots.txt

    sed -e 's|\t|\n|g' urls_to_download.txt | xargs -n 1 -P 10 wget -nc -x