Ordene os arquivos por data e copie todos os outros para uma nova pasta

1

Eu queria saber qual seria a maneira mais concisa de classificar arquivos por data e depois copiar todos os outros para uma nova pasta.

Meu problema: eu tenho arquivos renomeados para serem chamados

file1 (101)
file2 (103)
file3 (110)
.
.
.

onde a numeração não é indicativa da diferença do arquivo intrínseco. A única coisa que é realmente diferente entre os dois tipos de arquivos que eu quero ordenar é a data de criação alternada deles, portanto, minha declaração de problema acima é bastante complicada.

    
por lhcgeneva 20.01.2016 / 15:16

1 resposta

1

O script a seguir parece ser bom, mas só funcionará se você tiver nomes de arquivo "bem-comportados" [ 1 ] :

#!/bin/bash
foo=0
for f in $(ls -rt) ; do 
  if [ $((foo%2)) -eq 0 ];
    then
       echo "even " "$f";  // maybe here copy
    else
       echo "odd" "$f" ;   // maybe here skip
  fi
  let foo++
done

Então, essencialmente, não há novas linhas, nenhuma guia, sem espaços ... como parece no seu caso.
Lembre-se de que não é seguro analisar a saída de ls [ 1 ] e doublecheck sempre.

Se você não está na área segura em que você pode usar o ls, então você pode considerar encontrar uma solução com find , talvez inspirando-se na resposta de Gilles [2 ] .

Ps > Em caso de corrupção de dados, mesmo em um caso leve como o seu, sempre era necessário verificar se o patch funcionava. Muitas vezes é mais conveniente começar de novo desde o começo. Se, como eu acho, o tamanho dos dados é enorme e você não pode transferir / baixá-lo novamente, é sempre possível fazer alguma verificação (por exemplo, md5sum [3 ] ) nos dados originais e no patch.

    
por 20.01.2016 / 16:39