On 04/16/2014 04:12 PM, tiberiu socaciu wrote:
> anticarcel:
>
> socaciu@A102-LNX:~/carcel$ cat scr
> #! /bin/bash
> fisierdefisiere="fisierulcufisiere"
> Y=300
> prefix="dir_"
>
> function genereaza
> {
> rm -f $fisierdefisiere
> for i in `seq 1 1000`; do
> date > fisier$i
> echo fisier$i >> $fisierdefisiere
> done
> }
>
> function imparte
> {
> l=0
> cat $fisierdefisiere | while read f ; do
> l=$[$l+1]
> d=$[$l/$Y]
> echo procesez $f in directorul $prefix$d
> # aici bagi mutarea, clonarea sau ce mai vrei tu
> done
> }
Multumesc tuturor pentru raspunsuri! Din fiecare am de invatat cite
ceva!
Din categoria "twho hands face slap" face parte existenta comenzii split
:D (multumesc Bogdan BOTEZ)
Din categoria "both hands scratching head" exemplul lui Nicu cu fmt :)
La exemplul tau Tiberiu nu am inteles cum ar functiona bucla ...
(ai l care da numarul liniei la care esti; d e numarul de fisiere (la
care ar trebui +1 pentru a lua in calcul restul impartirii))
Nu am inteles cum se selecteaza Y linii odata pentru a se baga in
fisierul din $prefix$d si pe urma sa se continue cu urmatorul batch.
Ca sa nu par ca nu am facut nimic, intre timp am gasit si eu o solutie:
NR_FILES=`cat $DATA_FILE | wc -l`
NR_JOBS=$(( $NR_FILES/$JOBS_PACK + 1 ))
JOB_NEXT=1
for ((idx=1; idx <= NR_JOBS ; idx++))
{
mkdir -p $DIR_JOBS/job_$idx
tail -n +$JOB_NEXT $DATA_FILE | head -n $JOBS_PACK > $SUBJOB_DIR/data.txt
## job number
(( JOB_NEXT += JOBS_PACK ))
}
Multumesc frumos tuturor!!
Adrian
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug