Переименование файлов в подпапках с именами родительских папок

У меня есть основной каталог, в котором есть четыре папки f1, f2, f3 and f4, каждая из этих папок имеет 10 папок, и каждая из этих 10 папок ff1...ff10 имеет некоторые .jpeg изображения с некоторыми именами, скажем, image1 .... и так далее. Я хочу знать, как переименовать эти .jpeg-изображения в каждой из этих папок из 10 папок в каждом из f1, f2, f3 and f4, так что я буду конкатенации родительских папок в начале его имени, например image1.jpeg находится в f3/ff1, тогда его имя будет f3_ff1_image1.jpeg, то же самое со всеми другими изображениями в других 10 папках в каждой из четырех основных папок. Если кто-нибудь может проконсультироваться, как это можно сделать в файле .sh.

1
задан 28 September 2014 в 22:15

1 ответ

С помощью цикла и некоторых манипуляций с строкой bash

while read -rd $'\0' f; do 
  d="${f%/*}"; p="${d/\//_}";
  echo mv -- "$f" "${d}/${p}_${f##*/}"
done < <(find -type f -name '*.jpeg' -printf '%P\0')

(удалите echo после подтверждения, что он правильно соответствует файлам)

С помощью perl-based rename и bash globstar

shopt -s globstar
rename -nv -- 's|(f\d+)/(ff\d+)/(image\d+)|$1/$2/$1_$2_$3|' **/*.jpeg

(удалите -nv, как только вы подтвердите, что он правильно соответствует файлам)

3
ответ дан 24 May 2018 в 03:19

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

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