我正在寻找一个 Linux 工具来搜索 CD 和 DVD 等离线媒体上的文件。我知道有很多“编目”工具,但那些都是图形化的,我想要一个命令行程序。理想的情况是,它的工作方式与众所周知的locate/updatedb 包一样,唯一的例外是数据库更新必须是交互式的,这样您就可以输入媒体的一些 id 或描述,这些将由类似locate的工具打印出来,例如
$ medialocate foo.png
MEDIA_DVD_01:/pictures/misc/foo.png
MEDIA_DVD_08:/photos/foo.png
MEDIA_DVD_08:/img/bar/foofoo.png
这样的工具存在吗?我还没有找到任何东西,但这可能是因为“locale”/“cd”/“files”/“catalog”等术语太常见,无法产生良好的结果。我自己写这样的工具并不难,但我不想在这里重新发明轮子。
答案1
您可以使用 updatedb 来解析可移动媒体路径,只需在 /etc/updatedb.conf 或等效文件中相应地配置 PRUNEPATHS 和 PRUNEFS 环境变量即可。尽管这只会记住路径,但如果您在同一目录中安装不同的媒体并运行 updatedb,它会覆盖(或附加?)文件。
您可以通过将每张 CD 安装到其自己的目录中来解决这个问题,这不是很难,但是有点麻烦。
答案2
我对此的具体解决方案是使用isoinfo
wodim 在 ~/dvddb/ 目录中生成文件,并使用 DVD 的标签作为文件名(如果您不使用 RockRidge 扩展,请更改-lR
为-lJ
):
isoinfo -lR -i /dev/scd0 > ~/dvddb/xxx.txt
然后,查找一些文件:
grep -i 'name' ~/dvddb/*
您可能想要创建 shell 别名。
答案3
我使用如下的 shell 脚本:
#!/bin/bash
find $1 -type f -exec xmler.sh {} + > out.xml
xmler 创建的位置:
<file>
<filename>someFilename.txt</filename>
<md5sum>xxxxxxxxxxxx</md5sum>
<date_modified>....</date_modified>
</file>
文件条目被包裹在
<catalogue type="dvd" diskid="someid"></catalogue>
等等,然后将其转换为 XML 文档。然后我可以编写工具来创建 HTML 目录和索引、搜索工具等等。
有点黑客,但对我有用。