Ubuntu 13.10 服务器:wget 自动更改下载文件的文件名

Ubuntu 13.10 服务器:wget 自动更改下载文件的文件名

我的 Ubuntu 13.10 服务器上有一个简单的 shell 脚本,用于下载列表中的所有文件。

filen="/home/chester/test/workobject.txt"
dir_log="/home/chester/test"

if [ -f "$filen" ]
then
cd $dir_log
for n in `cat $filen`
   do
     echo $n
     wget -O $n.txt -q http://domain.com/QuickSearch?object=$n&search=Overview
   done
else
   echo "Nothing to do."
fi

内容workobject.txt

9957881
9A39879

脚本运行正常。但是,当它下载9957881.txt文件时,它会将文件名更改为9Z44X7~P.txt

剧本有什么问题?

答案1

我建议你使用:

wget -O - -q http://domain.com/QuickSearch?object=$n&search=Overview > $n.txt

看一下man wget就明白为什么。

答案2

我检查了输出,发现%0D文件名上显示 。经过进一步研究,我发现这是 上的尾随换行符workobject.txt。遗憾的是,我无法对文件的格式进行任何处理,workobject.txt因为它仅通过 推送到我的服务器scp

我只是让脚本做同样的事情,并在处理后批量重命名所有文件以删除%0D文件名尾随的部分。

最终的脚本如下所示:

filen="/home/chester/test/workobject.txt"
dir_log="/home/chester/test"

if [ -f "$filen" ]
then
cd $dir_log
for n in `cat $filen`
   do
     wget -q http://domain.com/QuickSearch?object=$n
   done
else
   echo "Nothing to do."
fi
rename "s/%0D//g" Quick*

非常有效。

相关内容