Como mover apenas uma quantidade específica de imagens de uma pasta

4

Eu tenho uma pasta que tem 200.000 imagens. Eu quero fazer o seguinte:

  1. Mover uma quantidade X de imagens (50 imagens, 100 imagens, 200 imagens) dessa pasta para a pasta Y.
  2. Cada pasta Y pode ser um número (Pasta 1, Pasta 2, Pasta 3 ...).
  3. O resultado final pode ser assim:

Pasta 1 (tem uma quantidade X de imagens) Pasta 2 (tem quantidade X de imagens) Pasta 3 (tem uma quantidade X de imagens) Pasta 4 (tem quantidade X de imagens)

    
por Luis Alvarado 16.10.2012 / 02:15

3 respostas

3

Execute o script no diretório de imagens. Certifique-se de que o destino não tenha subdiretórios.

IMG=100     # Number of images to move
DES="."     # Destination

I=$(find . -maxdepth 1 -mindepth 1 -type f | wc -l)
N=$(( (I / IMG) + (I % IMG) ))
eval mkdir "$DES"/Folder{01..$N}

for i in $(find "$DES" -maxdepth 1 -mindepth 1 -type d | sort); do
    mv $(find . -maxdepth 1 -mindepth 1 -type f | sort | grep -m $IMG '.*') $i
done
    
por Basharat Sialvi 16.10.2012 / 12:06
1

Tente este script, ele deve atender a sua solicitação, mas os últimos arquivos X permanecerão no diretório original

OrigDIR=~/FolderX
DestDIR=~/FolderY
NumberOfMovedItems=
SubDestDir=
Count=1

while [ 'find $DIR -OrigDIR 1 -type f| wc -l' -gt $NumberOfMovedItems ] ; do
  NewSubDir=$DestDIR/${SubDestDir}${Count}
  mkdir $NewSubDir
  find $OrigDIR -maxdepth 1 -type f | head -n $NumberOfMovedItems | xargs -I {} mv {} $NewSubDir
  let Count++
done

Altere o caminho do FolderX e do FolderY como desejar.

Quando você executa o script, é necessário fornecer o número de itens a serem movidos e o nome do subdiretório

Source

    
por user61928 16.10.2012 / 07:45
0

Eu começaria criando uma lista

ls X > X.list
for Y in 'seq 1 10' ; do mkdir $Y ; mv 'head -n $(( Y * 50 )) X.list | tail -n 50' $Y ; done
    
por January 16.10.2012 / 06:59

Tags