2015-01-08 80 views
0

我正在使用以下命令来下载使用wget的文件,仅当它自上次下载以来发生了更改。如何获取由wget下载的文件的文件名

wget --directory-prefix="$DIR" --content-disposition --timestamping "$URL" 

我想wget来命名该文件为适当的(URL传递到我的剧本,所以我不知道它可能是什么),我想用--timestamping,所以我不能使用--output -文件。

如何确定使用的文件名?

我以为我可以在$ DIR中搜索最近的文件,但如果该目录中有多个文件(可能存在)并且该文件已经是使用时间戳确定的最新文件,那么这将不起作用。

+2

创建一个空的临时目录,将文件下载到该目录中。那么你将只有一个文件需要担心,并且可以将它移动到别处。否则,你需要分析$ URL并希望它包含文件名,如果它是像'example.com?fileID = xxx'这样的东西,那么你必须查看http响应头并从内容中解析出文件名-disposition头。 –

+0

假设没有更多的进程正在写入它,你会得到相同的结果,如果检查给定目录中的最后修改文件。使用自定义路径不是必需的,但更容易。 – erm3nda

回答

0

如果Content-Disposition的处理不重要(因为我不确定是否卷曲),那么您可以使用curl代替。

outfile=$DIR/foo 
curl -z "$outfile" -o "$outfile" --remote-time "$URL" 

但要小心,不要使用curl可以解析为一个日期的文件名(在-z标志是愚蠢的那样)。