Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9

Открыть новую тему     Написать ответ в эту тему

alyent



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обратите, пожалуйста, внимание, что существует более активная на настоящий момент смежная ветка.

Там же можно ознакомится со списком примечательной литературы по теме.
Первый пост этой ветки имел вид...

Всего записей: 1087 | Зарегистр. 09-03-2002 | Отправлено: 10:04 02-02-2003 | Исправлено: ASE_DAG, 19:08 12-07-2013
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
$(dirname $file) = "./2024-08-27/001/jpg/13"
 
$date = "2024-08-27"
$hour = "13"
 
Не понимаю как нужно показать? что не так объясняю?
Получаю это значение "./2024-08-27/001/jpg/13" в переменной $(dirname $file), из этого значения хочу извлечь значение "2024-08-27" и поместить в переменную $date, так же с "13" - в $hour.
Что бы потом можно было сформировать собственный путь.

Всего записей: 1507 | Зарегистр. 07-09-2004 | Отправлено: 10:08 27-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tolyn77

Цитата:
Что бы потом можно было сформировать собственный путь.

ну так почему сразу не сформировать его регулярным выражением - заменой частей сразу. зачем закидывать в какие то переменные?

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 10:14 27-11-2024
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
я сразу про это и написал, только я не понимаю в это делается

Всего записей: 1507 | Зарегистр. 07-09-2004 | Отправлено: 16:48 27-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tolyn77

Цитата:
я сразу про это и написал, только я не понимаю в это делается

в какой раз спрашиваю - покажите точно как хотите преобразовать
строка1 => строка2, а не в виде переменных.

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 21:22 27-11-2024
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
туплю все равно не понимаю что я не то пишу?
./2024-08-27/001/jpg/13 => 2024-08-27
./2024-08-27/001/jpg/13 => 13

Всего записей: 1507 | Зарегистр. 07-09-2004 | Отправлено: 09:25 30-11-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tolyn77

Цитата:
туплю все равно не понимаю что я не то пишу?

не нужно разбивать в переменные.
нужно показать как будет выглядеть конечный путь, содержащий и дату и 13, а не по отдельности.
 

Цитата:
Что бы потом можно было сформировать собственный путь.

какой конечный, какая комбинация?
 
./2024-08-27/001/jpg/13 => 2024-08-27_13, к примеру.
или как еще, где и для чего хочется использовать эти данные?

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 09:53 30-11-2024
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
я ведь сразу написал мне нужно из одного значения получить два, дату и 13
 
конечный результат 2024-08-27/13_имя файла
 
Добавлено:
#!/bin/bash
path="$1"
loop_folder_recurse() {
    for i in "$1"/*;do
        if [ -d "$i" ];then
            echo "dir: $i"
            loop_folder_recurse "$i"
        elif [ -f "$i" ] ; then
            echo file "$i"
            echo "$(dirname $i)"
#            echo "mv $i ../$dat/$hour_$(basename $file)"
        fi
    done
}
echo "Base path: $path"
loop_folder_recurse "$path"

Всего записей: 1507 | Зарегистр. 07-09-2004 | Отправлено: 08:17 02-12-2024 | Исправлено: tolyn77, 10:00 02-12-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tolyn77

Цитата:
конечный результат 2024-08-27/13_имя файла
 

зачем так длинно?

Код:
find . -type f -name "*.jpg" | while read file; do
        echo $(echo $(dirname $file) | sed -E 's@([0-9]{4}-[0-9]{2}-[0-9]{2}/).*/([0-9]+)$@\1\2_@')$(basename $file)
done

если путь не попадает под паттерн - не меняется

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 09:45 02-12-2024
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
спасибо

Всего записей: 1507 | Зарегистр. 07-09-2004 | Отправлено: 17:35 08-12-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru