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.