Jūs neprisijungęs
Aukštyn Tema Programinė įranga / GNU/Linux, bei Unix Operacinės Sistemos / bash pusprogramis katalogui sukurti ir pavadinti
- Virginijus Data 2006-05-10 17:58
Laba
Taigi reikia skriptui :
sukuria katalogą ir jį pavadina prieš tai esančio (arba jau nustatytu) vardu+dadeda skaičių didėjančia tvarka, pagal prieš tai sukurta katalogą.
arba kas nors panašaus..
Pagrindinė - knoppkius Data 2006-05-21 22:28
Pagrindinė Virginijus Data 2006-05-21 22:31
ačiū už linką, bet gal galėtum parašytą parodyt ;)
kitą savaitę laisvesnis, užsiimsiu.
Pagrindinė - s2 Data 2006-05-23 00:57
tingėjau raiškiai, tai ant smūgio su awk-u pabandžiau:

$ find $(ls -dl *[0-9] | awk '/^d/ {skind=match($9, "[0-9]+$")" "; print substr($9, 0, skind-1)}' | sort | uniq -c | sort -n | tail -n 1 | awk '{print $2}')* | tail -n 1 | awk '{skind=match($0, "[0-9]+$"); prfx=substr($0, 0, skind-1); sffx=substr($0, skind); len=length(sffx); printf("%s%0*d\n", prfx, len, sffx+1)}'

tarkim, in CWD turim keletą rinkinukų:

[s2@katleriai wine-git]$ ls -ld test*
drwxrwxr-x  2 s2 s2 4096 May 23 00:08 test001
drwxrwxr-x  2 s2 s2 4096 May 23 00:08 test002
drwxrwxr-x  2 s2 s2 4096 May 23 00:44 test007
drwxrwxr-x  2 s2 s2 4096 May 23 00:44 test008
drwxrwxr-x  2 s2 s2 4096 May 23 00:44 test009
drwxrwxr-x  2 s2 s2 4096 May 23 00:44 test010
drwxrwxr-x  2 s2 s2 4096 May 23 00:44 test011
[s2@katleriai wine-git]$ ls -ld www*
drwxrwxr-x  2 s2 s2 4096 May 23 00:28 www0
drwxrwxr-x  2 s2 s2 4096 May 23 00:28 www1
drwxrwxr-x  2 s2 s2 4096 May 23 00:28 www2
drwxrwxr-x  2 s2 s2 4096 May 23 00:28 www3
drwxrwxr-x  2 s2 s2 4096 May 23 00:28 www4
drwxrwxr-x  2 s2 s2 4096 May 23 00:28 www5

ir gaunam:
[s2@katleriai wine-git]$ ls -dl *[0-9] | awk '/^d/ {skind=match($9, "[0-9]+$")" "; print substr($9, 0, skind-1)}' | sort | uniq -c | sort -n
      1 crt_dbg
      1 system
      6 www
      7 test

štai pagal paskutinę eilutę tokiam sąraše ir bus toliau numeruojama direktorija.  mano komanda (pavadinkim ją increase_highest_dir) output-ins taip:

$ increase_highest_dir
test012

jei nori kur tokią dir-ą, tuomet bash-e leidi:
$ mkdir $(increase_highest_dir)

tik gaila, kad nesugebu į alias-ą sukišt šitos ilgos komandikės. (trukdo vidinės viengubos kabutės)
Pagrindinė Virginijus Data 2006-05-23 17:53
ghm... dekui. :)
Pagrindinė s2 Data 2006-05-23 18:39 Redaguota: 2006-05-23 19:56
O pamiegojus štai ir akademinis pavidalas:

#!/bin/bash

order_all_numbered_dirs() {             \
  ls -dl *[0-9] |                       \
  awk '/^d/ {
    skind=match($9, "[0-9]+$")" ";
    print substr($9, 0, skind-1)
  }' |                                  \
  sort |                                \
  uniq -c |                             \
  sort -n                               ;
}

find_mostly_masively_numbered_dir() {   \
  find $(                               \
    order_all_numbered_dirs |           \
    tail -n 1 |                         \
    awk '{print $2}'                    \
  )* |                                  \
  tail -n 1                             ;
}

increase_number_in_name() {
  awk '{
    skind=match($0, "[0-9]+$");
    prfx=substr($0, 0, skind-1);
    sffx=substr($0, skind);
    len=length(sffx);
    printf("%s%0*d\n", prfx, len, sffx+1)
  }'
}

DIR=$(find_mostly_masively_numbered_dir | increase_number_in_name)

echo "* Found" $(find_mostly_masively_numbered_dir) &&
echo "* Calculated" $DIR from this, creating it:    &&
mkdir $DIR                                          &&
ls -ld $DIR                                         &&
echo "* Success"
###


šitą jau ir tobulinti lengviau (visokius overflow-us rankiotis ir pradines sąlygas dėliotis;)
Aukštyn Tema Programinė įranga / GNU/Linux, bei Unix Operacinės Sistemos / bash pusprogramis katalogui sukurti ir pavadinti

Powered by mwForum 2.29.6 © 1999-2015 Markus Wichitill