Náhodný přesun souborů v shell skriptu

mario

Náhodný přesun souborů v shell skriptu
« kdy: 03. 04. 2017, 11:36:57 »
Dobry den

Potreboval by som pomoct zo shell scriptom. V linuxe mam zlozku1 vnej sa nachadza (priklad) 1000 jpg obrazkov 20 nahodnych obrazkov potrebujem presunut do zlozky2 ale v zlozke1 sa tychto 20nahodnych obrazkov zmaze cize ich tam bude uz len 980. Vedeli by ste mi niekto poradit ?

Dakujem
Pekny den :)
« Poslední změna: 03. 04. 2017, 13:35:10 od Petr Krčmář »


Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Pomoc s shell scriptom (vyber suboru)
« Odpověď #1 kdy: 03. 04. 2017, 11:59:41 »
Kód: [Vybrat]
#!/bin/bash
IMAGES=./data
MOVETO=./data2
HOWMUCH=3

for counter in $(seq 1 $HOWMUCH); do
    FILESCOUNT=$(ls $IMAGES -1 | wc -l)
    if [ $FILESCOUNT -gt 0 ]; then
        FILETOMOVE=$(ls $IMAGES -1 | tail -n +$(( $RANDOM % FILESCOUNT )) | head -n 1)
        mv $IMAGES/$FILETOMOVE $MOVETO
    fi
done

třeba tak...
IMAGES - kde jsou obrázky
MOVETO - kam je přesunout
HOWMUCH - kolik jich přesunout
« Poslední změna: 03. 04. 2017, 12:03:41 od Tuxik »

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Pomoc s shell scriptom (vyber suboru)
« Odpověď #2 kdy: 03. 04. 2017, 12:13:01 »
Možná by bylo lepší ještě přepsat
Kód: [Vybrat]
MOVETO=./data2
na
Kód: [Vybrat]
MOVETO=./data2/protože kdyby adresář data2 neexistoval, ochotně to několikrát můvne do souboru data2 a výsledkem bude několik smazaných souborů a jeden přesunutý do souboru data2.

mario

Re:Pomoc s shell scriptom (vyber suboru)
« Odpověď #3 kdy: 03. 04. 2017, 12:31:27 »
Kód: [Vybrat]
#!/bin/bash
IMAGES=./data
MOVETO=./data2
HOWMUCH=3

for counter in $(seq 1 $HOWMUCH); do
    FILESCOUNT=$(ls $IMAGES -1 | wc -l)
    if [ $FILESCOUNT -gt 0 ]; then
        FILETOMOVE=$(ls $IMAGES -1 | tail -n +$(( $RANDOM % FILESCOUNT )) | head -n 1)
        mv $IMAGES/$FILETOMOVE $MOVETO
    fi
done

třeba tak...
IMAGES - kde jsou obrázky
MOVETO - kam je přesunout
HOWMUCH - kolik jich přesunout

Velmi pekne dakujem funguje :)  ;)

Honza

Re:Pomoc s shell scriptom (vyber suboru)
« Odpověď #4 kdy: 03. 04. 2017, 12:38:57 »
proc tak slozite :)

for a in `ls -A /source/ | sort -R | head -n 20`; do
   mv /source/$a /dest/$a
done;