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

Спасибо.

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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.