Desculpe : Eu não notei o "arquivo txt" com as "centenas de milhares de linhas". Esta é apenas uma solução naif ...
for a in test*; do ls -l $a; if [[ $((i++ % 2)) != 0 ]]; then sleep 1; fi; done
Atualizar : Explicação e (atualizar parcialmente para o arquivo txt com nomes de arquivos).
... reformatando:
for a in 'cat file.txt'
do
cp "$a" "$a-backup" ## REPLACE THIS LINE
if [[ $((i++ % 2)) != 0 ]] then
sleep 1
fi
done
- este meio de uma linha;
for a in files
processa o arquivo $ a e dorme se for uma linha par.
Para ver se a linha está nivelada, estamos contando ( i++
) e vendo se i % 2 is 0
- no bash
$(( ...exp ))
calcula ...exp
como expressão numérica
- dessa forma,
$((i++ % 2)) != 0
será verdadeiro para até mesmo iterações (e neste
caso nós sleep 1
)
- no bash
[[ ...exp ]]
calcula ...exp
como expressão booleana
Nota: esta solução funcionou com file.txt
contendo 100_000 ficheiros, mas irá falhar muito file.txt