sh/bash/dash/ksh/zsh等Shell脚本
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#1
帖子
由 xiooli » 2008-05-01 18:58
保存到任意目录然后cd到该目录
代码: 全选
chmod +x ./downdocs.sh
用途:
用于搜索并下载特定格式的文件,此处的文件主要是文档文件如lrc、doc等,当然你不能用它来搜索图片,音乐,某种片片等东东。
ps:这不是我能支配的,如果你说为何不能下片片,那么我只能建议你去询问baidu的工作人员啦:D
用法:
使用方法:
downdocs.sh -f [文档类型] [待搜文件名(就是keywords啦)],不加-f参数默认搜索lrc文件。
文档类型包括lrc(歌词文件)、doc、xls、pdf、ppt等。
下载的文件默认保存在~/docs/filetype目录,保存的文件名格式为:文件名.filetype
源码:
代码: 全选
#!/bin/bash
#coded by xiooli
#使用方法:downdocs.sh -f [文档类型] [待文件名],不加-f参数默认搜索lrc文件。
#文档类型包括lrc(歌词文件)、doc、xls、pdf、ppt等。
#参考了benqlk的部分代码:http://forum.ubuntu.org.cn/viewtopic.php?t=95073,(虽然这段代码现在已经被替换了)在此表示感谢。
#下载的文件默认保存在~/docs/filetype目录,保存的文件名格式为:文件名.filetype
if [ $1 == "-f" ];then
filetype=$2
keyword=$3
else
filetype="lrc"
keyword=$1
fi
#在此改变文件的保存目录
save_dir=~/docs/$filetype
if ! [ -d ~/docs ];then
mkdir ~/docs
fi
if ! [ -d $save_dir ];then
mkdir $save_dir
fi
if [ `locale |grep "LANG=.*UTF-8"` ];then
lang=1
fi
if [ $lang ];then
tmp=`echo "$keyword" | iconv -c -f utf-8 -t gb2312`
else
tmp=$keyword
fi
#将字符转换成urlencode(字母也会被转成urlencode,不过搜索效果是一样的,就没有区别对待啦:P)
a=`echo "$tmp" | od -t x1 -A n |tr " " %`
#获取原材料并从中提取出欲下文档的url并下载之。
wget "http://www.baidu.com/s?wd=$a+filetype%3A$filetype&cl=3" -O /tmp/src_file
if [ $lang ];then
iconv -f gb2312 -t utf-8 -c /tmp/src_file >/tmp/src_file_utf8
cat /tmp/src_file_utf8 |grep -i "<b>【$filetype】</b>" |sed 's/href=\"/\n/g' |sed 's/.*cache.baidu.com.*//g' \
|awk -F"</font>" '{print $1,$2}' |sed 's/ target=.*\">//g' |sed 's/<.*>//g;s/文件格式://g;s/ //g' \
|grep "^http" |grep -n "^http">/tmp/links
else
mv /tmp/src_file /tmp/src_file_utf8
cat /tmp/src_file_utf8 |grep -i "<b>【$filetype】</b>" |sed 's/href=\"/\n/g' |sed 's/.*cache.baidu.com.*//g' \
|awk -F"</font>" '{print $1,$2}' |sed 's/ target=.*\">//g' |sed 's/<.*>//g;s/�ļ���ʽ://g;s/ //g' \
|grep "^http" |grep -n "^http">/tmp/links
fi
echo "文件类型:$filetype
"
cat /tmp/links |awk -F"\"" '{print $2}' |grep -n ".*"
if [ -s /tmp/links ];then
read -p "请选择你要下载的文件:" num
url=`cat /tmp/links |grep "^$num" |awk -F"\"" '{print $1}' |awk -F":" '{print $2":"$3}'`
name=`cat /tmp/links |grep "^$num" |awk -F"\"" '{print $2}'`
if [ -e $save_dir/$name.$filetype ];then
echo "已存在同名文件!"
else
if [ $lang ] && [ $filetype == "lrc" ] ;then
wget "$url" -O /tmp/$name.$filetype
iconv -f gb2312 -t utf-8 -c /tmp/$name.$filetype -o $save_dir/$name.$filetype
rm /tmp/$name.$filetype
else
wget "$url" -O $save_dir/$name.$filetype
fi
fi
else
echo "未搜索到结果"
fi
源文件:
-
附件
-
- downdocs.sh.去掉后面(新).rar
- (2.43 KiB) 已下载 80 次
-
- downdocs.sh.去掉后面.rar
- 这个已经旧了,请下第一个
- (2.47 KiB) 已下载 132 次
上次由
xiooli 在 2008-05-16 23:26,总共编辑 5 次。
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#2
帖子
由 xiooli » 2008-05-01 18:59
来一张运行图片:
-
附件
-
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#3
帖子
由 xiooli » 2008-05-02 13:42
在原来只下lrc的基础上增加了下载doc、pdf、ppt等文件的功能,欢迎大家下载试用
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#5
帖子
由 eexpress » 2008-05-02 15:03
作什么用的呢。那被搜索的文件,是什么文件啊。
● 鸣学
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#6
帖子
由 xiooli » 2008-05-02 15:49
eexpress 写了:作什么用的呢。那被搜索的文件,是什么文件啊。
就是搜索并下载文档文件的呀,比如doc、pdf、ppt、lrc这些格式的文件啊,可能有用点是还是下载歌词文件了,默认不加-f参数就是下载歌词文件的。
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#7
帖子
由 eexpress » 2008-05-02 15:58
[待搜文件名]是指url吗
● 鸣学
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#8
帖子
由 xiooli » 2008-05-02 16:08
eexpress 写了:[待搜文件名]是指url吗
额滴神啊,文件名能是url么,当然是指keywords拉
ps:难道是我的表达有问题?
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#9
帖子
由 eexpress » 2008-05-02 17:13
是这意思拉。因为1楼没说明用处啊。你不觉得吗。呵呵。
● 鸣学
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#11
帖子
由 solcomo » 2008-05-16 15:13
谢lz
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#12
帖子
由 solcomo » 2008-05-16 21:33
lz..我什么也搜索不到
-
附件
-
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#13
帖子
由 solcomo » 2008-05-16 23:13
在我这还是不行
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#14
帖子
由 solcomo » 2008-05-16 23:14
记起来一件重要的事...我是英文locale..
代码: 全选
como@Lethe:~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#15
帖子
由 xiooli » 2008-05-16 23:18
solcomo 写了: 记起来一件重要的事...我是英文locale..
代码: 全选
como@Lethe:~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
我也是刚刚想到的,哈哈,没有考虑周全啊,等我再改下。