簡體   English   中英

使用 wget 下載 URL 內容后獲取文件大小

[英]Get file size after downloading URL content with wget

我正在嘗試編寫一個 bash 腳本,它將下載 URL 的內容(非遞歸),然后分析下載的文件。

如果下載的文件是文本文件(即 index.html),我想知道文件的大小並計算該文件中的字符數。

如果文件是圖像文件,我只想知道文件大小。

現在我正在使用wget並下載輸入 URL 的內容,但問題是當我在腳本中執行此操作時,我不知道已下載文件的文件名。

所以,兩個主要問題是:

  1. 使用wget對文件執行一些分析操作后,如何在腳本中獲取文件名?
  2. 如何確定下載文件的文件類型?

我建議使用-O開關設置wget將寫入的文件名。 然后可以生成一個文件名,告訴wget將 URL 下載到該文件名,然后使用您選擇的文件名運行任何想要的分析工具。

這里的想法是,您不必弄清楚 web 站點或 URL 或wget將選擇什么名稱 - 您正在控制參數。 一般來說,這是一種有用的編程技術。 用戶或某些外部程序或網站提供的輸入越少,您的程序代碼就越健壯和簡單。

至於選擇文件名,您可以使用時間戳。 如果您給它一個+FORMAT參數, date實用程序可以為您生成一個時間戳。 或者,由於您提到這是分析工具的一部分,因此您可能根本不想保存該文件。 在這種情況下,請嘗試使用mktemp之類的工具來生成保證唯一的文件名,然后在退出之前將其刪除。

有關詳細信息,請參閱手冊頁wget(1)date(1)mktemp(1)

不提供完整的工作代碼,以防有人將其作為學校作業,他們偶然發現了這個問題。 我不想讓那個假設的人太容易。 ;-) 當然,如果有人問了更具體的問題,我可能會為他們澄清我的答案。

我終於設法解決了。

#!usr/bin/env bash
URL="$1"
FILENAME=$(date +%y-%m-%d-%T) #Set the current date and time as the filename
wget -O "$FILENAME" "$URL"    #Download the content from the URL and set the filename
FILE_INFO=$(file "$FILENAME") #Store the output from the 'file' command

if [[ "$FILE_INFO" == *"text"* ]]
then 
 echo "It's a text file"
elif [[ "$FILE_INFO" == *"image"* ]]
then 
 echo "It's an image"
fi

特別感謝 Ben Scott 的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM