Embora seja recomendado usar uma ferramenta "profissional" e comprovada para cumprir essa tarefa de forma confiável, aqui está uma abordagem rápida e simples para uma solução. A exclusão de uma linha em um arquivo pode falhar devido a problemas do sistema, portanto, manter os nomes dos arquivos copiados com êxito em um arquivo de log parece um pouco mais seguro. Crie um arquivo "todo" contendo os arquivos para copiar, por exemplo redirecionando ls
resultados e um arquivo "log" vazio. Então corra
comm -2 -3 todo log |
while read FN
do echo cp "$FN" "new/path/to/$FN" && echo "$FN" >> log || echo "$FN" >&2
done 2>>errlog
Sempre que isso for executado, os arquivos já copiados e registrados serão ignorados. Você pode querer sort
os arquivos "todo" para evitar que o arquivo de aviso " comm
" não esteja em ordem de classificação ".