Wpis z mikrobloga

#linux #sysadmin

mam 600 plików o randomowych nazwach, potrzebuje zmienić ich nazwę w ten sposób:
aa.ext
ab.ext
ac.ext
...
zz.ext

gdzie ext to moje rozszerzenie, a nazwa pliku to kombinacja dwuliterowa - od aa do zz, plików jest mniej niż dostępnych kombinacji liter

jak to najłatwiej zrobić w bashu?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Virgo92:
list=echo {a..z} ; for c1 in $list ; do for c2 in $list ; do echo $c1$c2.ext; done; done
generuje mi nazwy jakie chce

for i in *; do F=$(mktemp -u); mv "$i" ${F##*.}; done
zmienia nazwy na randomowe, potrzebuję to teraz połączyć :D
  • Odpowiedz
@Virgo92: to opiszę jeszcze raz po kolei, bo tam wyżej chaotycznie a teraz mam chwilkę ;D

potrzebuję stworzyć trochę plików z randomowym tekstem (na macu może się pluć o illegal byte sequence, to dajemy przed komendą: export LC_CTYPE=C)

< /dev/urandom tr -dc "\t\n [:alnum:]" | dd of=./plik bs=100000000 count=1 && split -b 50 -a 10 ./plik && rm ./plik
listuję pliki w katalogu
  • Odpowiedz
@clockwork_orange: lista=echo {a..z}; for i in $lista; do for j in $lista; do echo $i$j.ext >> /tmp/newfilenames.txt ; done; done;filenumber=1; for i in ls; do mv $i cat /tmp/newfilenames.txt | head -n $filenumber | tail -n 1;filenumber=$(($filenumber+1)); done; rm -f /tmp/filenames.txt
  • Odpowiedz