【发布时间】:2018-03-15 01:02:14
【问题描述】:
#!/bin/bash
for i in `cat pdfs.txt`
do
wget --waitretry=1 --read-timeout=20 --timeout=15 -c -O $i > `cat pdfsnaming.txt`
done
我正在使用 wget 抓取 pdf 文档列表,我想将它们重命名为文本文档“pdfsnaming.txt”的内容。我知道您将 wget 重命名为-(大写 O 已确认)
wget-O $i > foo.tag
pdfsnaming.txt- 里面有大约 500 个名字,有的有空格,有的没有; -没有报价 (例如:JohnDoe)例如:John Doe)
nameone
nametwo
namethree
name spaced
namefour
name spaced2
pdfs.txt- 包含网址仅供参考,没有引号
错误结果/下载的文件名--
--waitretry=1
它把它命名为第一个全字 WGET 标记??
在实验上我猜这可以用一个数组来完成?但随之而来的问题是这将是一个巨大的数组,我必须添加单独的代码来添加引号和括号等等等。更不用说引号必须不会导致这种情况(例如:“name”“spaced” )。
while read -a arr;
do wget --waitretry=1 --read-timeout=20 --timeout=15 -t 1 -cO
"${arr[0]}".pdf "${arr[1]}"
done < <(paste -d'\1' pdfsnaming.txt pdfs.txt)
调试代码
【问题讨论】:
-
您正在尝试从 pdfsnaming.txt 中逐行读取文件名?
-
是的,我希望循环中的每个 wget 输出都以 pdfsnaming.txt 中的名称命名,位于列表下方。
-
paste是类似于压缩的命令。你想看看那个。 -
名称中有空格吗?它们是如何划分的?
-
是的,例如,例如。 John Doe,而有些就像前任一样。约翰多
标签: linux bash shell loops wget