2013-09-18 6 views
0

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

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 
+0

Большое спасибо devnull -it работает :-) – archeogroup

0

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

find $ROOT_DIR -type d -exec your_script.sh \; 
Смежные вопросы