- Раскладывание файлов по каталогам, нужен совет., konst, 18:52 , 30-Июл-03 (1)
>Что неправильно в этой структуре, или как можно это проще сделать? > >есть архивы типа 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} `(это обратная кавычка)
- Раскладывание файлов по каталогам, нужен совет., Sergey, 19:18 , 30-Июл-03 (2)
Собственно в чем проблема, у меня не работает конструкция ${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
- Раскладывание файлов по каталогам, нужен совет., konst, 19:34 , 30-Июл-03 (3)
>Собственно в чем проблема, у меня не работает конструкция >${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; done rezult - OK
|