Переименуйте файлы, добавив имя их родительской папки

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

Вот сценарий:

v_1:
filenames.txt

v_2:
labels.txt

v_3:
coding.txt

Каков мой ожидаемый результат?

v_1:
v_1_filenames.txt

v_2:
v_2_labels.txt

v_3:
v_3_coding.txt

Что я пытался решить это?

rename -n 's/(.*)\//$1\/$1_/' */*

какие отпечатки

rename(v_1/filenames.txt, v_1/v_1_filenames.txt)
rename(v_2/labels.txt, v_2/v_2_labels.txt)
rename(v_3/coding.txt, v_3/v_3_coding.txt)

Однако это не работает. Чтобы подтвердить, что я сделал:

ls *

и я получаю:

v_1:
filenames.txt

v_2:
labels.txt

v_3:
coding.txt

Любой кий? Спасибо

1 ответ

Решение

Просто удалите опцию -n, От man prename *:

-n, --no-act
        No Action: show what files would have been renamed.

* Есть несколько команд под названием rename; Я полагаю, вы используете prename на Ubuntu 16.04 или более ранней, хотя вариант -n делает то же самое для большинства других версий. Подробности см. В чем разница между различными командами "переименовать"?

Другие вопросы по тегам