Может я что-то не понял, но можно тогда пример, без скрипта, что есть и что должно быть на выходе?

alexemergy@stub:~$ cat test

$ ls -1 /home/motion/CamRecords/ipcam01|head
01-20120207104003.avi
01-20120207104004-04.jpg
01-2012-02-07_12-25-26.avi
01-20120207122620-03.jpg
02-2012-02-07_12-29-38.avi
02-20120207122939-03.jpg
03-2012-02-07_12-31-13.avi
03-20120207123115-00.jpg
04-2012-02-07_12-32-30.avi
04-20120207123232-00.jpg

$ ls -1 /home/motion/CamRecords/ipcam01|tail
2012-02-28_19-05-55-event-24.avi
2012-02-28_19-06-22-03-event-24.jpg
2012-02-28_19-09-03-event-25.avi
2012-02-28_19-09-16-02-event-25.jpg
2012-02-28_19-12-26-event-26.avi
2012-02-28_19-13-32-00-event-26.jpg
2012-02-28_19-15-48-event-27.avi
2012-02-28_19-15-50-00-event-27.jpg
2012-02-28_19-18-45-event-28.avi
Thumbs.db
alexemergy@stub:~$ cat test|perl -nE 'say $1 if/(\d{4}-\d{2}-\d{2})/'
2012-02-07
2012-02-07
2012-02-07
2012-02-07
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28
2012-02-28

Tue Feb 28 20:07:02 2012, Тарас Перебейносов писал:
Вставил костылик в виде grep. В конце выводится пустая строка. Не знаю откуда она берется, но как это нее избавиться?


folder1="/home/motion/CamRecords/ipcam01"
folder2="/home/motion/CamRecords/ipcam02"

cd $folder1
ls -1 | while read file
do
        # 2012-02-28_18-08-40-04-event-04.jpg
        # 2012-02-28_18-09-45-event-05.avi
folderName=$(echo $file | grep -Pe '^[0-9]{4}-[0-9]{2}-[0-9]{2}' | sed -re 's/^([0-9]{4}-[0-9]{2}-[0-9]{2})_.+/\1/')
        if [ "$folderName_old" != "$folderName" ]
        then
                echo $folderName
        fi
        folderName_old=$folderName
done


28 февраля 2012 г. 19:27 пользователь Тарас Перебейносов <taras.perebeyno...@gmail.com <mailto:taras.perebeyno...@gmail.com>> написал:

    Доброго времени суток!

    Помогите, пожалуйста, разобраться с регулярными выражениями в sed.
    Я пытаюсь написать скрипт, который будет ежедневно складывать в
    папочки по датам файлы:

    $ *ls -1 /home/motion/CamRecords/ipcam01|head*
    01-20120207104003.avi
    01-20120207104004-04.jpg
    01-2012-02-07_12-25-26.avi
    01-20120207122620-03.jpg
    02-2012-02-07_12-29-38.avi
    02-20120207122939-03.jpg
    03-2012-02-07_12-31-13.avi
    03-20120207123115-00.jpg
    04-2012-02-07_12-32-30.avi
    04-20120207123232-00.jpg

    $ *ls -1 /home/motion/CamRecords/ipcam01|tail*
    2012-02-28_19-05-55-event-24.avi
    2012-02-28_19-06-22-03-event-24.jpg
    2012-02-28_19-09-03-event-25.avi
    2012-02-28_19-09-16-02-event-25.jpg
    2012-02-28_19-12-26-event-26.avi
    2012-02-28_19-13-32-00-event-26.jpg
    2012-02-28_19-15-48-event-27.avi
    2012-02-28_19-15-50-00-event-27.jpg
    2012-02-28_19-18-45-event-28.avi
    Thumbs.db

    Вот набросок разбора имен:

    #!/bin/bash

    folder1="/home/motion/CamRecords/ipcam01"
    folder2="/home/motion/CamRecords/ipcam02"

    cd $folder1
    ls -1 | while read file
    do
            # 2012-02-28_18-08-40-04-event-04.jpg
            # 2012-02-28_18-09-45-event-05.avi
            folderName=$(echo $file|*sed -re
    's/([0-9]{4}-[0-9]{2}-[0-9]{2})_.+/\1/'*)
            if [ "$folderName_old" != "$folderName" ]
            then
                    echo $folderName
            fi
            folderName_old=$folderName
    done

    Я ожидал, что скрипт выведет мне имена для папок, которые нужно
    создать. Но выводится также и мусор (то, что не подходит под
    шаблон <YYYY-MM-DD>).

    $ *./folderOrder.sh |head*
    01-20120207104003.avi
    01-20120207104004-04.jpg
    01-2012-02-07
    01-20120207122620-03.jpg
    02-2012-02-07
    02-20120207122939-03.jpg
    03-2012-02-07
    03-20120207123115-00.jpg
    04-2012-02-07
    04-20120207123232-00.jpg

    $ *./folderOrder.sh |tail*
    2012-02-20
    2012-02-21
    2012-02-22
    2012-02-23
    2012-02-24
    2012-02-25
    2012-02-26
    2012-02-27
    2012-02-28
    Thumbs.db

    Как убрать из вывода строки, которые не совпадают с шаблоном
    <YYYY-MM-DD> ?





--
Alex Emergy

--
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

Дати відповідь електронним листом