我在Ubuntu10.04下打算写一个电子书管理程序,我下了很多电子书,分门别类都存放在~/资料/ebook目录下,这个目录下还有很多子目录,如下:ls ~/资料/ebook
丛书  共产主义  计算机  人文  数学  学习科研  医学  阅读  杂志  自行车  自然科学每个目录下面有的还有其它子目录,比如计算机里面有数据结构,操作系统,Linux编程等等子目录,直到最后就是电子书。
我设计了数据库BookManger结构,用如下代码创建了四个表:
create_table.sql#为电子书管理系统创建表/*书籍表*/
DROP TABLE IF EXISTS book;
CREATE TABLE book
(
book_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, /*书籍ID*/
        book_name VARCHAR(100) NOT NULL, /*书名*/
        book_press VARCHAR(100) NOT NULL, /*出版社*/
        book_type VARCHAR(50) NOT NULL, /*书籍分类*/
        book_language ENUM('CN', 'EN') NOT NULL, /*语言,就两种*/
        book_date DATE NOT NULL /*出版日期*/
);/*书库表*/
DROP TABLE IF EXISTS lib;
CREATE TABLE lib
(
book_id INT UNSIGNED NOT NULL PRIMARY KEY, /*书籍ID*/
lib_path VARCHAR(100) NOT NULL, /*存储位置*/
        lib_format VARCHAR(10) NOT NULL /*文件格式*/
);/*作者表*/
DROP TABLE IF EXISTS author;
CREATE TABLE author
(
book_id INT UNSIGNED NOT NULL, /*书籍ID*/
author VARCHAR(50) NOT NULL /*作者*/
);/*关键词表*/
DROP TABLE IF EXISTS keyword;
CREATE TABLE keyword
(
book_id INT UNSIGNED NOT NULL, /*书籍*/
author VARCHAR(50) NOT NULL /*关键词*/
);然后用"mysql -u user -p BookManager < create_table.sql"在mysql中创建了book,lib,author,keyword四个表,
然后用如下四个文本文件记录数据
book.txt 论语 人民文学 国学/儒家 CN 1900-01-01
C语言 电子工业 计算机/编程/C语言 EN 2010-01-01lib.txt1 ~/ebook/a.pdf pdf
2 ~/ebook/b.chm chmauthor.txt1 张三
2 李四keyword.txt1 国学
1 儒家
1 经典
2 编程
2 C语言
2 教科书最后用load_table.sql将以上数据导入数据库:#将数据从文本文件中装载到数据库中
LOAD DATA LOCAL INFILE "book.txt" INTO TABLE book;
LOAD DATA LOCAL INFILE "lib.txt" INTO TABLE lib;
LOAD DATA LOCAL INFILE "author.txt" INTO TABLE author;
LOAD DATA LOCAL INFILE "keyword.txt" INTO TABLE keyword;用"mysql -u zym -p BookMananger < load_table.sql"将数据导入mysql。
之后在mysql命令行下访问该数据库,查询都成功了。
现在的问题是如何把ebook目录下的书名(几乎所有电子书的文件名都是书名)自动的导入一个文本文件,如果手工输,几千本,太慢了吧。当然作者,关键词那些没办法,只能手工输,我想是可以用shell命令把文件名导出成文本文件吧?该用什么命令?用"ls -R ~/资料/ebook"的输出为(只是一小部分)/home/zym/资料/ebook/自然科学/物理:
Information.Physics.and.Computation.2009.pdf  伽莫夫&斯坦纳德-物理世界奇遇记.chm     物理文化与物理学史.pdf
爱因斯坦&英费尔德-物理学的进化.chm            凯瑞·路易斯·托马斯&克利斯·马顿-水.chm  新概念物理教程
柽柽宇宙 自然界的造型和设计.pdf               夸克与美洲豹.pdf                       新量子世界.pdf
对称.pdf                                      理论物理.pdf                           宇宙的琴弦.pdf
费曼-别闹了,费曼先生.chm                      迈克尔·罗文—罗宾森-火与冰——核.chm      终极理论之梦.pdf
分形物理学.pdf                                生命科学中的物理学.pdf/home/zym/资料/ebook/自然科学/物理/新概念物理教程:
新概念物理教程(力学).pdf  新概念物理教程(量子力学).pdf能不能把那个路径"/home/zym/资料/ebook/自然科学/物理:"之类的去掉,只留文件名,而且使文件名每个占单独的一行?
谢谢啊!

解决方案 »

  1.   

    ll | awk -F '/' '{print $NF}'
      

  2.   

    多谢,我用”ll -R ~/资料/ebook | awk -F '/' '{print $NF}'“
    出来的结果是:物理:
    总用量 141892
    -rw-r--r--  1 zym zym 13243049 2009-05-16 05:07 Information.Physics.and.Computation.2009.pdf
    -rwxr-xr-x  1 zym zym   588725 2007-04-02 12:07 爱因斯坦&英费尔德-物理学的进化.chm*
    -rw-r--r--  1 zym zym 15282017 2010-10-18 14:27 柽柽宇宙 自然界的造型和设计.pdf
    -rw-r--r--  1 zym zym  3677657 2010-10-17 22:29 对称.pdf
    -rwxr-xr-x  1 zym zym   281329 2007-04-02 12:08 费曼-别闹了,费曼先生.chm*
    -rw-r--r--  1 zym zym  4130266 2010-10-17 20:23 分形物理学.pdf
    -rwxr-xr-x  1 zym zym  1816761 2007-04-02 12:08 伽莫夫&斯坦纳德-物理世界奇遇记.chm*
    -rwxr-xr-x  1 zym zym   293166 2007-04-02 12:08 凯瑞·路易斯·托马斯&克利斯·马顿-水.chm*
    -rw-r--r--  1 zym zym  9098555 2010-10-19 19:54 夸克与美洲豹.pdf
    -rwxr-xr-x  1 zym zym   310102 2007-04-02 12:08 理论物理.pdf*
    -rwxr-xr-x  1 zym zym    91739 2007-04-02 12:08 迈克尔·罗文—罗宾森-火与冰——核.chm*
    -rw-r--r--  1 zym zym 13380616 2010-10-18 08:21 生命科学中的物理学.pdf
    -rw-r--r--  1 zym zym  8937762 2010-10-18 09:28 物理文化与物理学史.pdf-rw-r--r--  1 zym zym 55356069 2010-10-20 17:33 新量子世界.pdf
    -rw-r--r--  1 zym zym 12160153 2010-10-19 09:29 宇宙的琴弦.pdf
    -rw-r--r--  1 zym zym  6574781 2010-10-19 00:23 终极理论之梦.pdf新概念物理教程:
    总用量 12780
    -rwxr-xr-x 1 zym zym  2620770 2008-03-17 10:44 新概念物理教程(力学).pdf*
    -rwxr-xr-x 1 zym zym 10454059 2009-11-22 18:42 新概念物理教程(量子力学).pdf*目录是没了,但是文件名前面出现了权限,用户,大小,日期等东西,都是我不要的,该怎么办?我man了ll,没有这个手册条目。而且我还没学awk,正则表达式之类的东西。谢谢啊!
      

  3.   

    你可以 ls > aa.dat 或者 ll > aa.dat
    然后使用 load data infile 把文本文件导入数据库表中。
      

  4.   

    多谢了,谷歌解决了,ll是ls -l的别名,最后用"ls -R -1 ~/资料/ebook | awk -F '/' '{print $NF}'
     "就基本符合要求了。物理:
    Information.Physics.and.Computation.2009.pdf
    爱因斯坦&英费尔德-物理学的进化.chm
    柽柽宇宙 自然界的造型和设计.pdf
    对称.pdf
    费曼-别闹了,费曼先生.chm
    分形物理学.pdf
    伽莫夫&斯坦纳德-物理世界奇遇记.chm
    凯瑞·路易斯·托马斯&克利斯·马顿-水.chm
    夸克与美洲豹.pdf
    理论物理.pdf
    迈克尔·罗文—罗宾森-火与冰——核.chm
    生命科学中的物理学.pdf
    物理文化与物理学史.pdf
    新概念物理教程
    新量子世界.pdf
    宇宙的琴弦.pdf
    终极理论之梦.pdf新概念物理教程:
    新概念物理教程(力学).pdf
    新概念物理教程(量子力学).pdf