Получить имя папки и переименовать имя файла tr Linux bash

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

0004 название каталога (этот каталог является скриптом) - DSC_1234.jpg

результат 0004_1234.jpg

Скрипт работает, если я нахожусь в определенном каталоге. Я хотел изменить имя еще в подкаталогах

#!/bin/bash
CURRENT=`pwd`
BASENAME=`basename $CURRENT`
echo $BASENAME
for i in ./*DSC*;do mv -- "$i" "${i//DSC/$BASENAME}";done

2 ответа

Решение

В подкаталогах должно работать следующее:

for i in $(find . -type f); do dir="$(dirname ${i#./})"; mv "$i" "${i//DSC/$(basename $dir)}"; done

Вы, вероятно, хотите использовать find в вашем скрипте bash (назовите этот скрипт your_script.sh):

find $ROOT_DIR -type d -exec your_script.sh \;
Другие вопросы по тегам