2015-01-08 111 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標誌是愚蠢的那樣)。