2017-02-12 19 views
0

У меня есть текстовый файл с таким содержимым:Чтение данных из текстового файла и конвертировать изображения в PDF, переданной ей

123412-01 
123413-01 
123411-01 
123414-01 
123415-01 

Я хотел бы написать сценарий (Bash/оболочка/командную строку или PHP) который выберет 6 первых цифр для каждой строки и скопирует файлы в другой каталог, содержащий изображения, названные так.

123412-123.jpg 
123412-124.jpg 
123412-123.jpg 
123413-123.jpg 
123414-123.jpg 
123415-123.jpg 
123416-123.jpg 

Я не знаю, ясно ли я в своем вопросе.

  1. Прочитайте первую строку и выбрать первые 3 цифры (держать его в памяти)

  2. прочитать первую строку и теперь выбрать 6 первых цифр (держать его в памяти)

  3. Преобразуйте изображения (во второй каталог), которые содержат 3 первых цифры и девять 6 в папке и вложенной папке. Для примера, используя команду:

     convert /blabla/Images/H(3 first digits)/(6digits)-*.jpg /test/PDF/(6digits)-01.pdf
  4. Читать вторую строчку ...

Я должен написать этот код, чтобы попробовать его, но он не работает.

 

    cat id.txt 
    sF= cut -b 1-3 id.txt 
    F=cut cut -b 1-6 id.txt 

    while read -r line ; 

    do 

    convert /blabla/Images/H$sF/$F.jpg /test/PDF/'$F'-01.pdf 

    done 

Я думаю, что я ошибаюсь в отношении переменной и пути, но я не могу найти решение для ее решения.

+1

Круто .... что до сих пор пытались? – Kitson88

+0

Да, это возможно с помощью сценария оболочки. – 123

+0

Хорошо, спасибо, я пойду в этом направлении и напишу, что смогу сделать. – Rflow

ответ

1

Я думаю, что вы имеете в виду это:

#!/bin/bash 
while read line; do 
    first3=${line:0:3} 
    first6=${line:0:6} 
    echo convert "/blah/blah/images/H${first3}/${first6}-*.jpg" "/test/PDF/${first6}-01.pdf" 
done < file.txt 

, который дает это:

Пример вывода

convert /blah/blah/images/H123/123412-*.jpg /test/PDF/123412-01.pdf 
convert /blah/blah/images/H123/123413-*.jpg /test/PDF/123413-01.pdf 
convert /blah/blah/images/H123/123411-*.jpg /test/PDF/123411-01.pdf 
convert /blah/blah/images/H123/123414-*.jpg /test/PDF/123414-01.pdf 
convert /blah/blah/images/H123/123415-*.jpg /test/PDF/123415-01.pdf 
+0

Спасибо, я попробовал, и все работает отлично. Вы, что я должен добавить для выполнения каждого «преобразования»? – Rflow

+0

Сначала сделайте копию своих файлов, если она не сделает то, что вы хотите, затем отредактируйте скрипт и удалите слово «эхо» на второй до последней строки. На данный момент он только перекликается с экраном, что он * будет делать, а не делает что-либо, поэтому, если вы удалите 'echo', он действительно это сделает. –

+0

Спасибо, что все нормально работает;) – Rflow

1

Баш:

cat file.txt|cut -b 1-6|while read N; do cp "FIRSTDIR/image_$N.jpg" SECONDDIR; done 
+0

Спасибо. Я обновил свой вопрос. – Rflow