很简单的事情,nana同学的blog从msn space搬到了akaka之后,一直以blog的外观太过于老土为由拒不更新。于是就只能教育一下nana同学如何从themes.wordpress.org上找到感觉还行的theme,并记载下相关的下载地址,然后给我提交一份工作列表,我好把这些theme都给nana同学放上去......
结果nana同学太敬业啦,一口气给我发了20好几个候选项过来,看着密密麻麻的那堆链接,看得我一阵老眼昏花......
看了看wget的man手册,好加在还有个-i选项支持直接下载一个列表文件内的所有链接,很好!哗哗哗的就把那堆东西给下完了。可是ls一下,发现下载下来的东西尽是一些名字为download.php?theme=XXXX的东东----虽然一样可以用unzip解压开,可是看着那堆乱七八糟的名字,就是感觉不爽。找找看wget有没有什么选项可以把下载的文件名改为http地址跳转之后的文件名?看了wget的man手册半天,试了两下,好像没啥头绪,那就google吧,结果花了要20分钟也没有找到合理的选项,真是郁闷。
咱还得赶紧把这些theme给放上去呢,要不然肯定会遭投诉的。只好放弃研究wget的想法了。试了一下,居然没有办法用xargs来使用unzip把这些压缩包一个个解压,真是郁闷,只好用Awk来生成解压的脚本文件,要不然一个个的解压下来,准把我老人家累死。以下是用awk生成解压脚本的命令:
- ls |awk {'print "unzip "$1'}>unzip_themes.sh
之后就没啥技术含量的活可以说的了,很快的就通知nana同学可以去挑选自己喜欢的theme啦。看了看时间,已经花了要半个小时了。
因为懒惰,所以要节约劳动,最后花费了更多的时间,看来已经成为我的恶习了,是为懒惰系列故事之九。
附录:
搞到最后还很郁闷,留了这么两个问题记录下来,留待有缘人来给我答疑解惑。或者有朝一日,我老人家福至心灵,忽然就融会贯通了,再过来填答案吧:
- Q:wget真的就没有法度直接把类似于http://themes.wordpress.net/download.php?theme=182这样的地址直接下载为真正下载的zip文件的名字吗?说实在的,我真的很讨厌那个download.php?theme=182这样的名字!
A: -
Q:为什么unzip不支持xargs传递过来的参数?在那个只有一堆download.php?theme=XXX的目录里面,我执行以下的语句,为什么unzip会给我报错?
- ls |xargs unzip
unzip给我报了这样的一堆错误:
- Archive: download.php?theme=1224
- caution: filename not matched: download.php?theme=128
- caution: filename not matched: download.php?theme=1453
- caution: filename not matched: download.php?theme=182
- caution: filename not matched: download.php?theme=214
- caution: filename not matched: download.php?theme=234
- caution: filename not matched: download.php?theme=273
- caution: filename not matched: download.php?theme=396
- caution: filename not matched: download.php?theme=402
- caution: filename not matched: download.php?theme=45
- caution: filename not matched: download.php?theme=579
- caution: filename not matched: download.php?theme=58
- caution: filename not matched: download.php?theme=65
- caution: filename not matched: download.php?theme=66
- caution: filename not matched: download.php?theme=67
- caution: filename not matched: download.php?theme=8
- caution: filename not matched: download.php?theme=899
- caution: filename not matched: download.php?theme=960
- caution: filename not matched: download.php?theme=967
- 1 archive had fatal errors.
说实在的,我真的是摸不清楚unzip的脾气了。
A:
感谢大家来回答我的问题啊!
四月 20th, 2007 at 8:32 pm
四月 20th, 2007 at 8:58 pm
能让nana同学安家乐业是很不容易的
2007年四月 20 日 8:32 pm,馒头大声嚷嚷道:
签名
------
有困难要上,没有困难也要制造困难上
七月 5th, 2007 at 10:54 pm
真是太感谢工程师了啊,我对于我目前的外观甚是满意啊,还有,据说也因此你不是还有所收获麻,
四月 6th, 2008 at 4:03 pm
使用 xargs 中的 max-lines 选项控制命令的 argument 个数...
今天闲逛时发现一个有趣的问题 大概意思就是使用 xargs 把一个 zip 文件列表传给 unzip 解压时会报 "caution: filename not matched"这样的错误 感觉要是我自己碰到这种情况也会有同样问题的,于是...
四月 7th, 2008 at 9:41 am
有困难要上,没有困难也要制造困难上
为什么每天还要签个很个性的名字来"气"我们.
四月 7th, 2008 at 6:08 pm
你期待中的文件名其实存在于http的头部中,浏览器支持这个头部,但是wget可能不支持
$ curl -I 'http://themes.wordpress.net/download.php?theme=182'
HTTP/1.1 200 OK
X-Powered-By: PHP/4.4.6
Content-type: application/zip
Content-Disposition: attachment; filename="fading-flowers-10.zip"
Date: Mon, 07 Apr 2008 10:05:49 GMT
Server: LiteSpeed
Connection: close
所以在脚本里分析一下Content-Disposition,弄到filename字段的值,然后利用wget的 -O 选项就行啦
四月 7th, 2008 at 6:53 pm
2008年四月 7 日 6:08 pm,marcus大声嚷嚷道:
原来文件名在这里啊,也帮我解惑了,非常感谢!
四月 7th, 2008 at 7:20 pm
刚才又手痒去翻了翻,发现新版(1.11.1) wget 已经试验性地支持 Content-Disposition 了,需要手动启用 --content-disposition 选项。详见GNU Wget 1.11.1 Manual
四月 9th, 2008 at 10:36 am
感谢楼上两位同学的支持啊,这两个困扰了好久的问题总算都解决了
签名
---
这个,将近一年的问题了---虽然一直没有记得还有这两个问题