使用 wget 下载 URL 内容后获取文件大小
Get file size after downloading URL content with wget
我正在尝试编写一个 bash 脚本来下载 URL 的内容(非递归),然后分析下载的文件。
如果下载的文件是文本文件(即index.html)我想知道文件的大小并计算该文件中的字符数。
如果文件是图片文件,我只想知道文件大小。
现在我正在使用 wget
并下载输入 URL 的内容,但问题是当我在脚本中执行此操作时,我不知道文件名下载的文件的数量。
所以,两个主要问题是:
- 如何在使用
wget
对文件执行一些分析操作后在我的脚本中获取文件名?
- 如何确定下载文件的文件类型?
我建议使用 -O
开关设置要写入的文件名 wget
。然后可以生成一个文件名,告诉 wget
将 URL 下载到该文件名,然后 运行 使用您选择的文件名使用任何想要的分析工具。
这里的想法是,您不必弄清楚网站或 URL 或 wget
将选择什么名称 -- 您正在控制参数。这通常是一种有用的编程技术。用户或某些外部程序或网站提供的输入越少,您的程序代码就越健壮和简单。
至于选择文件名,您可以使用时间戳。 date
实用程序可以为您生成一个时间戳,如果您给它一个 +FORMAT
参数。或者,由于您提到这是分析工具的一部分,也许您根本不想保存文件。在这种情况下,请尝试使用 mktemp
之类的工具来生成保证唯一的文件名,然后在退出前将其删除。
有关详细信息,请参阅手册页 wget(1)
、date(1)
和 mktemp(1)
。
不提供完整的工作代码,以防万一有人把它作为学校作业,他们偶然发现了这个问题。我不想让那个假设的人太容易。 ;-) 当然,如果有人问更具体的问题,我可能会为他们澄清我的答案。
我终于解决了。
#!usr/bin/env bash
URL=""
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 的帮助!
我正在尝试编写一个 bash 脚本来下载 URL 的内容(非递归),然后分析下载的文件。
如果下载的文件是文本文件(即index.html)我想知道文件的大小并计算该文件中的字符数。
如果文件是图片文件,我只想知道文件大小。
现在我正在使用 wget
并下载输入 URL 的内容,但问题是当我在脚本中执行此操作时,我不知道文件名下载的文件的数量。
所以,两个主要问题是:
- 如何在使用
wget
对文件执行一些分析操作后在我的脚本中获取文件名? - 如何确定下载文件的文件类型?
我建议使用 -O
开关设置要写入的文件名 wget
。然后可以生成一个文件名,告诉 wget
将 URL 下载到该文件名,然后 运行 使用您选择的文件名使用任何想要的分析工具。
这里的想法是,您不必弄清楚网站或 URL 或 wget
将选择什么名称 -- 您正在控制参数。这通常是一种有用的编程技术。用户或某些外部程序或网站提供的输入越少,您的程序代码就越健壮和简单。
至于选择文件名,您可以使用时间戳。 date
实用程序可以为您生成一个时间戳,如果您给它一个 +FORMAT
参数。或者,由于您提到这是分析工具的一部分,也许您根本不想保存文件。在这种情况下,请尝试使用 mktemp
之类的工具来生成保证唯一的文件名,然后在退出前将其删除。
有关详细信息,请参阅手册页 wget(1)
、date(1)
和 mktemp(1)
。
不提供完整的工作代码,以防万一有人把它作为学校作业,他们偶然发现了这个问题。我不想让那个假设的人太容易。 ;-) 当然,如果有人问更具体的问题,我可能会为他们澄清我的答案。
我终于解决了。
#!usr/bin/env bash
URL=""
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 的帮助!