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


Автор Тема: sed. Переименование фалов с использованием регулярного выражения не работает  (Прочитано 51170 раз)

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

Оффлайн artemu88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Всем привет!
Изучаю Линукс по книгам.
Столкнулся с такой проблемой:
    в папке есть 3 файла:
-rw-rw-r-- 1 usr usr 0 мар 26 07:43 markus.y
-rw-rw-r-- 1 usr usr 0 мар 26 07:43 peter.y
-rw-rw-r-- 1 usr usr 0 мар 26 07:43 ulrike.y
    хочу их переименовать на расширение .x
для этого запускаю команду sed в конвейере:
ls *.y | sed 's/\(\.y\)$/mv & \1.x/' | sh
Первая команда выводит список файлов с расширением y и передаёт свой вывод команде sed, которая заменяет первую захватывающую группу на .x (на сколько я понимаю), а затем передает свой вывод на исполнение оболочке sh.
Но команда не работает. Вывод команды:
sh: 1: markusmv: not found
sh: 2: petermv: not found
sh: 3: ulrikemv: not found

В чем может быть проблема?
Всем Большое Спасибо!

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 4407
    • Просмотр профиля

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1742
    • Просмотр профиля
SED – это потоковый редактор текста, используйте FIND.

Оффлайн artemu88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
- а если так?
не работает, выдаёт:
sh: 0: Can't open *.x
sh: 0: Can't open ./*.x
соответственно

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 4407
    • Просмотр профиля
- а файлы исполняемые?
... а их содержимое это действительно bash-скрипты?

Оффлайн artemu88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Нет, файлы не исполняемые.
Решил проблему так:
ls *.y | sed 's/\(.*\)y$/mv & \1x/' | shи обратно, соответственно:
ls *.x | sed 's/\(.*\)x$/mv & \1y/' | sh

Ещё вариант:
for i in *.x; do mv "$i" "${i/x/y}";doneОшибка была в том, что команде mv нужно передавать имя файла целиком.
Всем большое спасибо!
« Последнее редактирование: 26 Марта 2023, 10:28:00 от artemu88 »

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Есть же команда rename. Что извращаться?
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн artemu88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Мне просто интересно было. :)

 

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