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


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

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

Оффлайн sherba800

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

#!/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

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

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

Оффлайн sherba800

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

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

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1967
    • Просмотр профиля
Код: Bash
  1. Ren_file(){ mv "$file" "$new_name"; }
  2.  
  3. for file in $(ls *); do
  4.         new_name="${file}_some_text"; Ren_file
  5.         new_name="${new_name}_more"; Ren_file
  6. done
  7.  

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14921
  • Я не слышу.
    • Просмотр профиля
Цитировать
# Второе переименование
не удаёться?
~.o

 

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