Прочтите результаты MongoDB и используйте в сценарии SH shell для создания символической ссылки

У меня есть коллекция MongoDB, заполненная фиктивными данными для демонстрации. У меня есть файл изображения в папке с именем example.jpg Для каждого идентификатора в коллекции я хочу создать символическую ссылку с ID.jpg на example.jpg

Например, если коллекция содержит 3 документа с идентификаторами 345kjh34k5, 8945ng49 и 3459t8u34, я хочу создать 3 символических ссылки из 345kjh34k5.jpg, 8945ng49.jpg и 3459t8u34.jpg, которые все указывают на example.jpg

Благодарю!

1 ответ

Вы хотите создать скрипт mongo для печати идентификаторов, а затем создать сценарий bash, который будет проходить через него и создать ссылку для каждого идентификатора.

Вот какой код для этого.

Настройка - создайте коллекцию монстров Mongodb

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

Setup - создать образец файла

Имя файла: file1.txt

File1 content. Blah blah blah.

MongoDB скрипт для печати фиктивных идентификаторов

Имя файла: printDummyIds.js

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

Вывод:

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

Сценарий Bash, который вызывает mongo, затем создает софт-ссылки

Имя файла: 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

licensed under cc by-sa 3.0 with attribution.