有时,想在好些光盘中找到想要的文件,不易。就有了光盘管理工具一类的软件,将光盘中的文件名整理成一个资料库。
ubuntu 10.04上,使用udisk机制,当有光盘插入光驱时,会自动mount到/media目录下,以光盘卷标命名一个挂载点,如一张光盘卷标为vol1,则它会被udisk自动mount到/media/vol1下。
现在,用一些命令和一个小程序,来组合工作,使得,当有光盘插入光驱并被成功mount上来后,将光盘内的文件列出来,并存到/media/cdlst目录下,并自动以卷名命令为一个txt文件,如上面的vol1光盘,其上的文件名自动保存到/media/cdlst/vol1.txt上。
程序1:call_getcdlst.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
unsigned char c,l[300],ll[400];
int k;
bzero(l,300);
k=0;
while(read(0,&c,1)){
if(c=='\n'){
if(k==0) continue;
printf(":%s:\n", l );
bzero(ll,400);
sprintf(ll, "./getcdlst %s", l );
printf("ret %d\n",system(ll));
bzero(l,300);
k=0;
} else
l[k++]=c;
}
return 0;
}
编译得到call_getcdlst
程序2 getcdlst 一个shell命令程序:
if [ "$1" = "" ]; then
echo "no volume"
else
dire="/media/"$1
fname="/media/cdlst/"$1".txt"
echo $dire
echo $fname
cd /media
ls -l -R $1 >> $fname
cat $fname
fi
方法:
打开一个命令行窗口,su到root,方便在media目录里操件
udisks --monitor-detail | grep --line-buffered "/media" |sed -u -e 's/.*\///' -e 's/$/\n/' | ./call_getcdlst
这样,当插入一张光盘时,就会在这里看到目录内容的输出,并在/media/cdlst下得到一个txt文件。于是,只要不断将放进/取出光驱,就能得到一组光盘里的文件清单了。
在udisk下收集光盘目录
其它类软件,非上述版软件
-
- 帖子: 7
- 注册时间: 2009-04-03 11:48
前往
- 公告/注意事项
- ↳ 新闻和通知
- ↳ 软件推荐
- 系统安装
- ↳ 教学和常见问答
- ↳ 系统安装和升级
- ↳ 启动和引导
- ↳ 网卡无线拨号
- ↳ 硬件与内核
- ↳ 笔记本及便携设备
- ↳ Ubuntu衍生版
- ↳ 其他类Unix OS发行版
- ↳ Debian发行版
- 配置美化
- ↳ 中文显示和输入法
- ↳ 个人配置文件存放点
- ↳ 软件文档翻译
- ↳ 窗口管理器及美化
- ↳ 桌面展示
- 软件使用
- ↳ 办公、图像、机械电子设计等
- ↳ Vim和Emacs
- ↳ 开源模板库
- ↳ 互联网相关软件
- ↳ 影音多媒体
- ↳ 游戏和模拟器
- ↳ 虚拟机和虚拟化
- ↳ Wine及其分支
- ↳ 其它类软件
- 服务器管理
- ↳ 服务器运维
- ↳ 云计算和容器(K8S/KVM/Docker/WSL等)
- ↳ Ubuntu VPS
- 程序设计与开发
- ↳ Shell脚本
- ↳ 软件/网站开发
- ↳ 内核及嵌入式开发
- ↳ Ubuntu编译和打包
- ↳ 开源小工具
- ↳ 挑战任务
- 感想与交流
- ↳ 深度PK版
- ↳ Ubuntu故事和感慨
- ↳ 同城交流
- ↳ 校园社团
- ↳ 港澳台校区
- ↳ 国外校区
- 站务区
- ↳ 论坛管理
- ↳ Ubuntu中文网上商店