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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Последовательное переименование в скрипте bash  (Прочитано 952 раз)

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

Оффлайн sherba800

  • Автор темы
  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Есть некий скрипт:

#!/bin/bash
for file in $(ls *); do
mv "$file" "${file}_some_text"           # Первое переименование
mv "$file" "${file}_some_more_text"      # Второе переименование
done

Вопросы:
1. Как, при необходимости, организовать скрипт, чтобы после первого переименования еще и второй раз обрабатывался тот же файл и добавлялось "_some_more_text" после первого?
2. Сейчас во втором переименовании на обработку идёт изначальное имя файла, как и в первом. Как сделать, чтобы во второе перименование уходило имя перименованного в первом перименовании файла?

Пробовал записать через конвеер, но не работает.

Axa-Ru

  • Гость
Разбейте на 2 цикла.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Странная задача. Почему не сделать за 1 раз? mv "$file" "${file}_some_text_some_more_text"Может поделитесь тайным смыслом? И вообще зачем нужен цикл, если можно использовать rename?

P.S. Не надо использовать ls. Достаточноfor file in *
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн sherba800

  • Автор темы
  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Странная задача. Почему не сделать за 1 раз?
Бывает нужно префикс для переименования в переменную положить, в нужный цикл вставить переменную, и закомментировать, а когда нужно раскомментировать. Бывают в общем задачи, когда последовательно нужно. Жаль пока не умею так делать.

Достаточноfor file in *
Чтобы можно было задать параметр для алфавитной сортировки типа:
ls -1vИногда тоже нужно бывает. Хотя согласен, для примера в шапке это совершенно не нужно.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Код: (bash) [Выделить]
Ren_file(){ mv "$file" "$new_name"; }

for file in $(ls *); do
new_name="${file}_some_text"; Ren_file
new_name="${new_name}_more"; Ren_file
done

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Цитировать
# Второе переименование
не удаёться?
Wars ~.o

 

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