GNU parallel
:
parallel -j10 -n100000 --no-notice -k 'mkdir -p dir_{#}; mv {} -t dir_{#}' ::: *
-
j N
- número de jobslots. Execute atéN
jobs em paralelo. No seu caso, executaremos 10 jobs para distribuir (mover) todos os diretórios entre os novos 10 diretórios pai -
-n100000
- use no máximo100000
arguments (dirnames) por linha de comando -
{#}
- número de sequência do trabalho a ser executado. Esta sequência de substituição será substituída pelo número de sequência do job que está sendo executado -
::: arguments
- usearguments
da linha de comando como fonte de entrada em vez de stdin (entrada padrão)
Para processar diretórios (dirnames) classificados por hora de modificação - use o seguinte pipeline:
ls -dtr * | parallel -j10 -n100000 --no-notice -k 'mkdir -p dir_{#}; mv {} -t dir_{#}'