【问题标题】:Read MongoDB results and use in SH shell script to create symbolic link读取 MongoDB 结果并在 SH shell 脚本中使用以创建符号链接
【发布时间】:2015-03-26 16:34:51
【问题描述】:

我有一个 MongoDB 集合,其中包含用于演示的虚拟数据。 我在名为 example.jpg 的文件夹中有一个图像文件 对于集合中的每个 ID,我想创建一个从 ID.jpg 到 example.jpg 的符号链接

例如,如果集合包含 3 个 id 为 345kjh34k5、8945ng49 和 3459t8u34 的文档,我想创建 345kjh34k5.jpg、8945ng49.jpg 和 3459t8u34.jpg 的 3 个符号链接,它们都指向 example.jpg

谢谢!

【问题讨论】:

    标签: mongodb shell ubuntu sh


    【解决方案1】:

    您可能想要创建一个 mongo 脚本打印 id,然后有一个 bash 脚本循环遍历它并为每个 id 创建一个链接。

    这里有一些代码。

    设置 - 创建 Mongodb Dummy 集合

    db = connect("test");
    db.dummy.insert({ _id : "345kjh34k5" });
    db.dummy.insert({ _id : "8945ng49" });
    db.dummy.insert({ _id : "3459t8u34" });
    

    设置 - 创建示例文件

    文件名:file1.txt

    File1 content. Blah blah blah.
    

    MongoDB 脚本打印虚拟 ID

    文件名:printDummyIds.js

    db = connect("test");
    var linkNames = db.dummy.find().map(function(doc){
            print( doc._id );
    });
    

    输出:

    mongo --quiet printDummyIds.js 
    345kjh34k5
    8945ng49
    3459t8u34
    

    调用 mongo 然后创建软链接的 Bash 脚本

    文件名:createLinksFromIds.sh

    echo Linking files to source.
    echo Source: $1
    ext="${1#*.}"
    out="./out/"
    mkdir $out
    for id in $(mongo --quiet printDummyIds.js) 
    do 
        lName=$out$id"."$ext ;
        echo Creating $lName ;
        ln -s $1 $lName ;
    done
    

    用法

    createLinksFromIds.sh FILE_PATH
    FILE_PATH is the file that you want to link.
    

    例子:

    bash createLinksFromIds.sh file1.txt
    

    输出:

    Linking files to source.
    Source: file1.txt
    Creating ./out/345kjh34k5.txt
    Creating ./out/8945ng49.txt
    Creating ./out/3459t8u34.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多