Eu usaria paste aqui. É uma ferramenta bacana que pode ser usada para combinar arquivos:
$ paste printdirs.txt archivedirs.txt
/u/lawson/law/print/lawson/tim/1 /u/lawson/law/print/archive
/u/lawson/law/print/dgfinance/monday190/1 /u/lawson/law/print/archive2
Como você pode ver acima, ele imprimirá linhas sucessivas de ambos os arquivos, separadas por tabulações. A separação por tabulação é muito útil se os nomes dos diretórios puderem conter espaços. Agora, você pode iterar sobre a saída paste para fazer sua coisa:
#!/usr/bin/ksh
printlist="/u/lawson/stage/Scripts/printdirs.txt"
archivelist="/u/lawson/stage/Scripts/archivedirs.txt"
paste "$printlist" "$archivelist" | while IFS=$'\t' read source dest; do
/usr/bin/find "$source" -mtime +14 -type f -exec mv -t "$dest" {} +
done
Note que eu i) removi o cd , não há necessidade, find pode ser executado no alvo de qualquer lugar; ii) removeu a sintaxe for i in $(cat foo) , que geralmente deve ser evitada e iii) substituiu -exec ... \; por -exec + , que é mais eficiente (tentará e combinará mv chamadas, e é por isso que o -t "$dest" é necessário) .
Se o seu mv não suportar a opção -t , altere o comando find de volta para:
/usr/bin/find "$source" -mtime +14 -type f -exec mv "$source" "$dest" \;