LINUX.ORG.RU
ФорумAdmin

Создание структуры папок год-месяц-день

 , , ,


0

1

Всем добрый день! Есть работающий скрипт, который берет файлы *.pdf(все pdf-файлы состоят из двух страниц) с папки inputdir_picture, конвертирует их в *.jpg и с помощью tesseract распознает для того чтобы переименовать и положить эти файлы в папку outputdir_picture.

#!/bin/bash

# папка для необработаных файлов 
inputdir="./input_picture"
# папка для обработаных файлов
outputdir="./output_picture"


[ -d "$inputdir" ] || exit 1
[ -d "$outputdir" ] || exit 2

#tmpfile=$(mktemp || exit 3)
tmpfile=$(mktemp) || exit 3
status=0

#переменая  con
echo "Начался процесс конвертирования..."
for con in "$inputdir"/*.pdf; do
#сам процесс конвертирования
convert -density 150 "$con" "$con".jpg
rm -f "$con"
done

echo "Начался процесс переименования... "
#процесс переименнования
for f in "$inputdir"/*-0.jpg; do
    tesseract -l ukr "$f" - > $tmpfile
         rm -f "$inputdir"/*-1.jpg
#    fio=$(sed -rn 's/^[Яя][,.] (.*)/\L\1/; T lab; s/((^| ).)/\U\1/gp; q; :lab' "$tmpfile")
fio=$(sed -rn 's/^[Яя][,.] (.*)/\L\1/; T lab; s/((^|[- ]).)/\U\1/g; s/ Фото$//; p; q; :lab' "$tmpfile")
    if [ -z "$fio" ]; then
        orig=$(basename "$f")
        txt=${orig%.jpg}.txt
        echo ФИО не найдены в файле \"$f\", текст записан в \"$outputdir/$txt\"
        cp "$tmpfile" "$outputdir/$txt"
        # mv "$f" "$outputdir"
        status=4
    else
        mv "$f" "$outputdir/$fio.jpg"
    fi
done

#добавил хз зачем
rm "$tmpfile"

exit $status

Задача: Необходимо добавить возможность чтобы он создавал вместо структуру папок год->месяц->день и переносил переименованные файлы вместо outputdir_picture в папку «день», соответственно.

Всем огромное спасибо за помощь. Все предложение по улучшению работы скрипта принимаются!


Напиши перед if код переопределения outputdir нужной датой, затем проверь существует ли эта директория, если нет, то создай её.

outputdir="2017/11/03"
[ -d $outputdir ] || mkdir -p $outputdir
kostik87 ★★★★★
()

Все предложение принимаются

Не делай так. С глубокой структурой потом неудобно работать. Лучше ./год-месяц-день/ (date +%F)

DonkeyHot ★★★★★
()
Ответ на: комментарий от hungry_ewok

Я прошу прощение, а где тут присвоение переменной outputdir название(путь) к только что созданной папке ?

isaecf
() автор топика
Ответ на: комментарий от isaecf

ну ок, развернем:

#!/usr/bin/bash

outputdir=«/home/arcdir/»

dte=`date '+%Y-%m-%d'`

outputdir=$outputdir$dte

[ -d $outputdir ] || ( mkdir -p $outputdir; echo $outputdir)

Опять же всё ок:

[root@mycentos]# ./test.sh /home/arcdir/2017-11-03

[root@mycentos]# ./test.sh [root@mycentos]#

hungry_ewok
()
Ответ на: комментарий от DELIRIUM

Спасибо за подсказку, нормально отрабатывает)

isaecf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.