script para copiar diretórios com incremento particular

1

Eu tenho diretórios que são nomeados como 0.1, 0.15,0.2, 0.25, 0.3.0.35 e assim por diante. Agora eu quero copiar diretórios em incrementos específicos, digamos, de 0.1 juntos para um diretório separado. Diga diretórios 0.1.0.2.0.3 deve ir para a pasta um; diretórios 0.15,0.25,0.35 devem ir para a pasta dois, etc. Como posso fazer isso com facilidade?

    
por user123900 17.07.2015 / 18:50

3 respostas

2

Para o seu problema específico, você pode usar o tamanho dos nomes dos arquivos para diferenciá-los:

mv ??? first
mv ???? second

Se você quiser resolver isso em um caso mais geral, você realmente quer usar uma linguagem como Python ou Ruby, em que o loop de arquivos e a aritmética básica são normais.

    
por 17.07.2015 / 19:01
0

Se o seu shell expandir a expansão :

para o primeiro incremento:

mv /path/to/0.{0..99} /path/to/newdirectory/

o segundo incremento:

mv /path/to/0.{0..99}5 /path/to/newdir/

nota: altere 0 e 99 de {0..99} com o primeiro e último dígito do seu incremento.

    
por 18.07.2015 / 17:07
-1

Esta é a estrutura de diretórios que estou usando

/
--0.1 - file
--0.2 - file
--0.15 - file
--0.25 - file
--first - dir
--second - dir

Agora, primeiro, moverei os arquivos 0,1 e 0,2 para o diretório 'first'

for f in 'ls|grep '^0\.[0-9]$'';do;mv $f first;done;

Em seguida, moverei 0,15 e 0,25 para o diretório 'second'

for f in 'ls|grep '^0\.[0-9][0-9]$'';do;mv $f second;done

No código, grep '<regex>' lista todos os arquivos correspondentes ao padrão e, em seguida, mv os move para os respectivos diretórios.

    
por 17.07.2015 / 19:04