Mover um intervalo de arquivos

0

Eu tenho um intervalo de arquivos numerados (imagens) e quero movê-los para o subdiretório. link = sugere que eu use

mv IMG_{001-022}.jpg subdir

O problema é que, considerando que o número é um registro de data e hora, não são números consecutivos. O acima não parece funcionar no meu caso.

A questão é como você faria isso em números não consecutivos.

Editar: Observe que neste caso particular existem arquivos numerados IMG_045.jpg por exemplo. Eu só quero qualquer arquivo que estivesse entre IMG_001-IMG_022

    
por sachinruk 26.08.2014 / 02:38

2 respostas

2

Para mover todos os arquivos do formulário IMG_nnn.jpg , em que nnn tem três dígitos e não necessariamente consecutivos, use:

mv IMG_[0-9][0-9][0-9].jpg subdir

Para mover apenas arquivos numerados, digamos, de 001 a 0022, pode-se usar:

mv IMG_{001..022}.jpg subdir

O problema com o acima é que ele irá gerar mensagens de erro para cada arquivo que não existe. As mensagens parecem:

mv: cannot stat 'IMG_014.jpg': No such file or directory

É simples, no entanto, ignorar essas mensagens. Use:

mv IMG_{001..022}.jpg subdir 2>&1 | grep -v "cannot stat"
    
por 26.08.2014 / 03:58
0

Eu usaria xargs para isso:

ls IMG_{001..022}.jpg 2&> /dev/null|xargs -I {} mv {} subdir/

Além disso, como gosto de testar primeiro tudo isso antes de usá-lo, começaria obtendo um comando ls para imprimir o que você deseja. Depois de ter que perfeito, basta adicionar a parte xargs. Acho que é a melhor maneira de acertar todas as vezes.

    
por 26.08.2014 / 04:51

Tags