Linux 资料管理器
2012-07-12 15:56 I Love Linux 阅读(124) 评论(2) 收藏 举报我喜欢手收集各种经典的文献,因此像txt,pdf,doc类型的文件保存的相当的多,大概有几个G吧。但后来发现平时想阅读这些文档时,查找想看的文档却成了难题。最近比较空闲,就在linux平台下用shell写了个资料管理器。下面是源代码:
#!/bin/bash
TXTFILEPATH=~/doc/txt
PDFFILEPATH=~/doc/pdf
TOPPATH=~/doc
init_program()
{
if [ ! -d $TOPPATH ]
then
mkdir -p $TOPPATH
fi
if [ ! -d $TXTFILEPATH ]
then
mkdir -p $TXTFILEPATH
fi
if [ ! -d $PDFFILEPATH ]
then
mkdir -p $PDFFILEPATH
fi
}
read_doc()
{
DOCNAME=$1
if [ -z $DOCNAME ]
then
echo "您输入的文件不存在!"
else
FILELIST=`find ~/doc | grep $DOCNAME`
i=0
for FILENAME in $FILELIST
do
if [ -f $FILENAME ]
then
i=`expr $i + 1`
echo $i $FILENAME
fi
done
echo -n "请选择您需要查看那哪个文件:"
read SELECT
FLAG_EXIST=`echo $SELECT | awk '{ if (match($0,"^[0-9]+$") != 0) print "true"; else print "false" }'`
if [ $FLAG_EXIST = "true" ]
then
i=0
FLAG_EXIST="no"
for FILENAME in $FILELIST
do
if [ -f $FILENAME ]
then
i=`expr $i + 1`
if [ $SELECT -eq $i ]
then
FLAG_EXIST="yes"
SELECTFILE=$FILENAME
fi
fi
done
if [ $FLAG_EXIST = "yes" ]
then
echo "你选择了第${SELECT}个文件:$SELECTFILE"
FILETYPE=`echo $SELECTFILE | cut -d"." -f2`
echo "文件类型是:$FILETYPE"
if [ $FILETYPE = "txt" ]
then
gedit $SELECTFILE &
elif [ $FILETYPE = "pdf" ]
then
xdg-open $SELECTFILE &
else
gedit $SELECTFILE &
fi
else
echo "选择超出了范围!"
fi
else
echo "请输入数字!"
fi
fi
}
save_doc()
{
SOURCE=$1
if [ -z $SOURCE ]
then
echo "输入不能未空!"
elif [ ! -f $SOURCE ]
then
echo "你输入的文件不存在,请查看那路径是否出错!"
else
FILETYPE=`echo $SOURCE | awk -F. '{print $NF}'`
echo "文件类型是 $FILETYPE"
if [ $FILETYPE = "txt" ]
then
mv $SOURCE $TXTFILEPATH
if [ $? -eq 0 ]
then
echo "保存成功!"
else
echo "保存失败!"
fi
elif [ $FILETYPE = "pdf" ]
then
mv $SOURCE $PDFFILEPATH
if [ $? -eq 0 ]
then
echo "保存成功!"
else
echo "保存失败!"
fi
else
echo "未识别的文件类型,默认保存到txt下面"
mv $SOURCE $TXTFILEPATH
if [ $? -eq 0 ]
then
echo "保存成功!"
else
echo "保存失败!"
fi
fi
fi
}
list_doc()
{
find $TOPPATH | less
}
del_doc()
{
DOCNAME=$1
if [ -z $DOCNAME ]
then
echo "您输入的文件不存在!"
else
FILELIST=`find ~/doc | grep $DOCNAME`
i=0
for FILENAME in $FILELIST
do
if [ -f $FILENAME ]
then
i=`expr $i + 1`
echo $i $FILENAME
fi
done
echo -n "请选择您需要删除的文件:"
read SELECT
FLAG_EXIST=`echo $SELECT | awk '{ if (match($0,"^[0-9]+$") != 0) print "true"; else print "false" }'`
if [ $FLAG_EXIST = "true" ]
then
i=0
FLAG_EXIST="no"
for FILENAME in $FILELIST
do
if [ -f $FILENAME ]
then
i=`expr $i + 1`
if [ $SELECT -eq $i ]
then
FLAG_EXIST="yes"
SELECTFILE=$FILENAME
fi
fi
done
if [ $FLAG_EXIST = "yes" ]
then
echo "你选择了第${SELECT}个文件:$SELECTFILE"
rm $SELECTFILE
if [ $? -eq 0 ]
then
echo "删除成功!"
else
echo "删除失败!"
fi
else
echo "选择超出了范围!"
fi
else
echo "请输入数值!"
fi
fi
}
help_doc()
{
echo "欢迎使用文档管理器!"
echo "这个软件可以方便您的资料管理!"
echo "存储文件轻输入(s),阅读文件请输入(r),查看文件列表请输入(l),删除存数文件请输入(d)"
echo "退出程序请选择(e)"
}
init_program
while getopts :s:r:ld:h OPTION
do
case $OPTION in
s) save_doc $OPTARG
;;
r) read_doc $OPTARG
;;
l) list_doc
;;
d) del_doc $OPTARG
;;
h) help_doc
;;
\?) help_doc
;;
esac
done
这段代码在ubuntu上可以正常运行,但在别的Linux版本,就不确定了。主要在于开启pdf文件的命令,在不同的Linux发行版本是不一样的吧。如果想移植到别的Linux发行版本请修改下read_doc函数开启pdf的那个语句既(xdg-open $SELECTFILE &)。
运行本代码会在Home目录下创建doc文件夹,并在doc文件夹下面创建txt,和pdf文件夹。在txt里面将会保存以".txt“结尾的文件,pdf下将会保存以".pdf"结尾的文件。具体的用法如下:
doc-manager -l // 打印doc文件夹下面的所有文件列表
doc-manager -s hello.txt //保存hello.txt到~/doc/txt/下面
doc-manager -r hello //查找doc下面的所有文件,把文件名包含hello的文件列出,用户可以选择一个打开
doc-manager -d hello // 查找doc下面的所有文件,把文件名包含hello的文件列出,用户可以选择一个删除
这个程序现在还没有支持word文档,用户可以自己去修改代码,添加上去
浙公网安备 33010602011771号