gpt4 book ai didi

linux - Bash,wget 从输出文件名中删除逗号

转载 作者:太空狗 更新时间:2023-10-29 11:13:26 26 4
gpt4 key购买 nike

我正在逐行读取带有 URL 的文件,然后将 URL 传递给 wget:

FILE=/home/img-url.txt
while read line; do
url=$line
wget -N -P /home/img/ $url
done < $FILE

这可行,但某些文件的文件名中包含逗号。如何在没有逗号的情况下保存文件?

例子:

http://xy.com/0005.jpg -> saved as 0005.jpg
http://xy.com/0022,22.jpg -> save as 002222.jpg not as 0022,22

我希望你觉得我的问题很有趣。

更新:

我们有一些不错的解决方案,但是是否有解决时间戳错误的方法?

WARNING: timestamping does nothing in combination with -O. See the manual
for details.

最佳答案

这应该有效:

url="$line"
filename="${url##*/}"
filename="${filename//,/}"
wget -P /home/img/ "$url" -O "$filename"

同时使用 -N 和 -O 将抛出警告消息。 wget 手册说:

-N (for timestamp-checking) is not supported in combination with -O: since file is always newly created, it will always have a very new timestamp.

因此,当您使用 -O 选项时,它实际上会创建一个带有新时间戳的新文件,因此 -N 选项变成了虚拟选项(它不能执行它的用途)。如果您想保留时间戳,那么解决方法可能是这样的:

url="$line"
wget -N -P /home/img/ "$url"
file="${url##*/}"
newfile="${filename//,/}"
[[ $file != $newfile ]] && cp -p /home/img/"$file" /home/img/"$newfile" && rm /home/img/"$file"

关于linux - Bash,wget 从输出文件名中删除逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30535838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com