На этот вопрос уже есть ответ здесь :
У меня есть родительский каталог, состоящий из набора подкаталогов. Каждый подкаталог состоит из списка файлов.
Вот сценарий:
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
Есть подсказка? Спасибо
Просто удалите опцию -n
. От man prename
*:
-n, --no-act
No Action: show what files would have been renamed.
* существует несколько названных команд rename
; Я предполагаю, что Вы используете prename
на Ubuntu 16.04 или ранее, хотя опция -n
делает то же самое для большинства других версий. Для получения дополнительной информации посмотрите то, Что различие между различным, "переименовывают" команды?