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

На этот вопрос уже есть ответ здесь :

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

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

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

Есть подсказка? Спасибо

3
задан 7 October 2018 в 21:23

1 ответ

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

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

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

3
ответ дан 1 December 2019 в 16:16

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

Похожие вопросы: