Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: парсинг имени файла  (Прочитано 1237 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ulasiuk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
парсинг имени файла
« : 24 Июня 2015, 21:19:36 »
Добрый день!
Пишу скрипт, который будет распихивать фото с именем вида 24-07-2009 18.30.511.jpg по папкам вида 01-2012.
Как вычленить из имени год и месяц (определённые символы).

#!/bin/bash
DIR=$1 # получаю директорию, откуда забирать файлы

FILES=$(find $DIR -type f -iname '*.jpg'  -exec basename '{}' \;)

for FILE in $FILES

do

GOD=$(echo {FILES:2:4}) # ВОТ тут я что-то путаю...
MES= .. # то-же с месяцем

echo "$GOD ... " # пока пытаюсь вывести год для контроля
mv $DIR/$FILES $GOD/$MES-$GOD/$FILES # тут вроде верно...

done

Оффлайн spk-ubuntu

  • Активист
  • *
  • Сообщений: 502
    • Просмотр профиля
Re: парсинг имени файла
« Ответ #1 : 24 Июня 2015, 21:59:44 »
#!/bin/bash
DIR=$1 # получаю директорию, откуда забирать файлы
cd $DIR
for FILE in *.jpg
do
    GOD=${FILE:6:4} # см. например [url]http://www.opennet.ru/docs/RUS/bash_scripting_guide/x4171.html[/url]
    MES= .. # то же с месяцем
    echo "$GOD ... " # пока пытаюсь вывести год для контроля
    mv "$FILE" "$GOD/$MES-$GOD/" # тут вроде верно...
done

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: парсинг имени файла
« Ответ #2 : 24 Июня 2015, 22:10:34 »
Если нет пробелов в именах (иначе неправильно будет работать for FILE in $FILES)
Код: (bash) [Выделить]

    GOD=${FILE:6:4}
    MES=${FILE:3:2}
    mkdir -p "$GOD/$MES-$GOD/"
    mv "$DIR/$FILE" "$GOD/$MES-$GOD/"
done
« Последнее редактирование: 24 Июня 2015, 22:12:44 от Azure »
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ulasiuk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: парсинг имени файла
« Ответ #3 : 24 Июня 2015, 22:44:07 »
Да, пробелов нет. Еще была проблема.. я запускал sh .. а правильно bash ..  (надо почитать литературу мне..)
теперь все работает., директории я создал уже другим скриптом.  Спасибо.

Работающий итог:
#!/bin/bash
DIR=$1 # получаю директорию, откуда забирать файлы


cd $DIR
for FILE in *.jpg
do
   GOD=${FILE:6:4} # см. например [url]http://www.opennet.ru/docs/RUS/bash_scripting_guide/x4171.html[/url]
   MES=${FILE:3:2} # то же с месяцем
   echo " Год = $GOD месяц = $MES "
   mv -v "$FILE" "../$GOD/$GOD-$MES/" # тут вроде верно. Добавил две точки - исходная дир. и получатели на одном уровне.
done
cd ..
« Последнее редактирование: 24 Июня 2015, 23:03:35 от ulasiuk »

 

Страница сгенерирована за 0.027 секунд. Запросов: 20.