[英]Get file size after downloading URL content with wget
我正在嘗試編寫一個 bash 腳本,它將下載 URL 的內容(非遞歸),然后分析下載的文件。
如果下載的文件是文本文件(即 index.html),我想知道文件的大小並計算該文件中的字符數。
如果文件是圖像文件,我只想知道文件大小。
現在我正在使用wget
並下載輸入 URL 的內容,但問題是當我在腳本中執行此操作時,我不知道已下載文件的文件名。
wget
對文件執行一些分析操作后,如何在腳本中獲取文件名?我建議使用-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.