Что неправильно в этой структуре, или как можно это проще сделать?
есть архивы типа mac.date.0001.gz
Пытаюсь раскладывать их скриптом по каталогам соответствующим их mac адресам..
#/bin/sh
tmd=`date '+%Y%m%d'`
for f in *.gz
do
#echo $f|tr -s '.' ' '|awk '/gz/ {print($1)}'
#Дает необходимый мне вывод
#mac1
#mac2
#...
#macn
#а так не работает!
mkdir $f|tr -s '.' ' '|awk '/gz/ {print($1)}'|cp -Rf ${f} bck/$f|tr -s '.' ' '|awk '/gz/ {print($1)}'/${f}
#===
doneСпасибо!
>Что неправильно в этой структуре, или как можно это проще сделать?
>
>есть архивы типа mac.date.0001.gz
>Пытаюсь раскладывать их скриптом по каталогам соответствующим их mac адресам..
>#/bin/sh
>tmd=`date '+%Y%m%d'`
>for f in *.gz
>do
>#echo $f|tr -s '.' ' '|awk '/gz/ {print($1)}'
>#Дает необходимый мне вывод
>#mac1
>#mac2
>#...
>#macn
>#а так не работает!
>mkdir $f|tr -s '.' ' '|awk '/gz/ {print($1)}'|cp -Rf ${f} bck/$f|tr
>-s '.' ' '|awk '/gz/ {print($1)}'/${f}
>#===
>done
>
>Спасибо!
mkdir `(это обратная кавычка) $f|tr -s '.' ' '|awk '/gz/ {print($1)}'|cp -Rf ${f} bck/$f|tr -s '.' ' '|awk '/gz/ {print($1)}'/${f} `(это обратная кавычка)
Собственно в чем проблема, у меня не работает конструкция
${f}|tr -s '.' ' '|awk '/gz/ {print($1)}' для cp и mkdir
она из файла 123456.300701.0001.gz
должна выташить 1 часть 123456 создать каталог вроде как
mkdir 123456
но в итоге создаеться
123456.300701.0001.gz
хотя
echo ${f}|tr -s '.' ' '|awk '/gz/ {print($1)}'
выдает
123456Может так не работает, и есть иной способ?
#/bin/sh
tmd=`date '+%Y%m%d'`
for f in *.gz
do
mkdir -p bck/$tmd/${f}|tr -s '.' ' '|awk '/gz/ {print($1)}'\
|cp -Rf ${f} bck/$tmd/${f}|tr -s '.' ' '|awk '/gz/ {print($1)}'
done
>Собственно в чем проблема, у меня не работает конструкция
>${f}|tr -s '.' ' '|awk '/gz/ {print($1)}' для cp и mkdir
>
>она из файла 123456.300701.0001.gz
>должна выташить 1 часть 123456 создать каталог вроде как
>mkdir 123456
>но в итоге создаеться
>123456.300701.0001.gz
>хотя
>echo ${f}|tr -s '.' ' '|awk '/gz/ {print($1)}'
>выдает
>123456
>
>Может так не работает, и есть иной способ?
>
>
>#/bin/sh
>tmd=`date '+%Y%m%d'`
>for f in *.gz
>do
> mkdir -p bck/$tmd/${f}|tr -s '.' ' '|awk
>'/gz/ {print($1)}'\
> |cp -Rf ${f} bck/$tmd/${f}|tr -s '.' ' '|awk
>'/gz/ {print($1)}'
>done
Я awk не пользуюсь, но с Perl это может выглядеть так
ls -l
-rw-r--r-- 1 root kvk 0 30 июл 19:32 123.456.a
-rw-r--r-- 1 root kvk 0 30 июл 19:33 124.456.b
-rw-r--r-- 1 root kvk 0 30 июл 19:33 125.456.cfor i in 1*;
do a=`echo $i | perl -ne '/^(\d+)/;print $1;'`;
echo "a=$a";
mkdir $a;
donerezult - OK