Вставил костылик в виде grep. В конце выводится пустая строка. Не знаю откуда она берется, но как это нее избавиться?<div><br></div><div><div><br></div><div>folder1="/home/motion/CamRecords/ipcam01"</div><div>folder2="/home/motion/CamRecords/ipcam02"</div>
<div><br></div><div>cd $folder1</div><div>ls -1 | while read file</div><div>do</div><div>        # 2012-02-28_18-08-40-04-event-04.jpg</div><div>        # 2012-02-28_18-09-45-event-05.avi</div><div>        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/')</div>
<div>        if [ "$folderName_old" != "$folderName" ]</div><div>        then</div><div>                echo $folderName</div><div>        fi</div><div>        folderName_old=$folderName</div><div>done</div>
<div><br></div><br><div class="gmail_quote">28 февраля 2012 г. 19:27 пользователь Тарас Перебейносов <span dir="ltr"><<a href="mailto:taras.perebeynosov@gmail.com">taras.perebeynosov@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Доброго времени суток!<div><br></div><div>Помогите, пожалуйста, разобраться с регулярными выражениями в sed.</div><div>
Я пытаюсь написать скрипт, который будет ежедневно складывать в папочки по датам файлы:</div><div><br></div>
<div><div>$ <b>ls -1 /home/motion/CamRecords/ipcam01|head</b></div><div>01-20120207104003.avi</div><div>01-20120207104004-04.jpg</div><div>01-2012-02-07_12-25-26.avi</div><div>01-20120207122620-03.jpg</div><div>02-2012-02-07_12-29-38.avi</div>

<div>02-20120207122939-03.jpg</div><div>03-2012-02-07_12-31-13.avi</div><div>03-20120207123115-00.jpg</div><div>04-2012-02-07_12-32-30.avi</div><div>04-20120207123232-00.jpg</div><div><br></div><div>$ <b>ls -1 /home/motion/CamRecords/ipcam01|tail</b></div>

<div>2012-02-28_19-05-55-event-24.avi</div><div>2012-02-28_19-06-22-03-event-24.jpg</div><div>2012-02-28_19-09-03-event-25.avi</div><div>2012-02-28_19-09-16-02-event-25.jpg</div><div>2012-02-28_19-12-26-event-26.avi</div>

<div>2012-02-28_19-13-32-00-event-26.jpg</div><div>2012-02-28_19-15-48-event-27.avi</div><div>2012-02-28_19-15-50-00-event-27.jpg</div><div>2012-02-28_19-18-45-event-28.avi</div><div>Thumbs.db</div></div><div><br></div><div>

Вот набросок разбора имен:</div><div><div><br></div><div>#!/bin/bash</div><div><br></div><div>folder1="/home/motion/CamRecords/ipcam01"</div><div>folder2="/home/motion/CamRecords/ipcam02"</div><div><br>

</div><div>cd $folder1</div><div>ls -1 | while read file</div><div>do</div><div>        # 2012-02-28_18-08-40-04-event-04.jpg</div><div>        # 2012-02-28_18-09-45-event-05.avi</div><div>        folderName=$(echo $file|<b>sed -re 's/([0-9]{4}-[0-9]{2}-[0-9]{2})_.+/\1/'</b>)</div>

<div>        if [ "$folderName_old" != "$folderName" ]</div><div>        then</div><div>                echo $folderName</div><div>        fi</div><div>        folderName_old=$folderName</div><div>done</div>

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

<div>01-20120207104003.avi</div><div>01-20120207104004-04.jpg</div><div>01-2012-02-07</div><div>01-20120207122620-03.jpg</div><div>02-2012-02-07</div><div>02-20120207122939-03.jpg</div><div>03-2012-02-07</div><div>03-20120207123115-00.jpg</div>

<div>04-2012-02-07</div><div>04-20120207123232-00.jpg</div></div><div><br></div><div><div>$ <b>./folderOrder.sh |tail</b></div><div>2012-02-20</div><div>2012-02-21</div><div>2012-02-22</div><div>2012-02-23</div><div>2012-02-24</div>

<div>2012-02-25</div><div>2012-02-26</div><div>2012-02-27</div><div>2012-02-28</div><div>Thumbs.db</div></div><div><br></div><div>Как убрать из вывода строки, которые не совпадают с шаблоном <YYYY-MM-DD> ?</div>
</blockquote></div><br></div>