LINUX.ORG.RU

[bash] brace expansion reference

 


0

1

Привет.

Подскажите, можно как-нибудь сослаться на элемент brace expansion?

Например: вот эти логи

/var/log/httpd/2012/01/{10..30}/access_log.gz
скопировать в другой каталог, добавив к имени файла префикс с именем каталога из которого он был скопирован, чтобы получилось так:

~/10_access_log.gz
~/11_access_log.gz
...
~/30_access_log.gz

В ABS про backreference в brace expansion что-то как-то не нашел. Подскажите куда гуглить.

quick and dirty придумал такое некрасивое норкоманство, только за это, наверное, могут побить и, возможно, даже ногами:

for i in `ls -1 /var/log/httpd/2012/01/{10..30}/access_log.gz`; 
do cp $i ~/`echo $i | awk -F'/' {'print $7'}`_access_log.gz; 
done

Спасибо.

★★

Последнее исправление: Frakhtan-teh (всего исправлений: 7)
Ответ на: комментарий от zolden

Уже, добавил в верхний пост, но некрасиво же.

Frakhtan-teh ★★
() автор топика
LOGDIR=/var/log/httpd/2012/01/
LOGFILE=access.log

cd $LOGDIR

for d in *; do
   [ -f "$d/$LOGFILE" ] && cp "$d/$LOGFILE" $HOME/${d}_$LOGFILE
done
sdio ★★★★★
()

for i in {10..30}
do
cp /var/log/httpd/2012/01/${i}/access_log.gz ~/${i}_access_log.gz
done

AITap ★★★★★
()

А перейти в директорию .../01/ и сделать: не вариант?

for i in {10..30}/access_log.gz; do cp $i ${i/\//_}; done

anonymous
()
Ответ на: комментарий от anonymous

Но плюсую вариант sdio: портабельнее и надежнее.

anonymous
()
Ответ на: комментарий от sdio

Ох. Да. Спасибо. У меня сезонные тупочки, похоже.

Frakhtan-teh ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.