for (( i = 1; i <= 30; ++i )); do
( cd "directory$i" &&
paste tableNC023.txt tableNC088.txt tableNC102.txt ... ) >"./merged_tables/tables_directory$i.txt"
done
Isso usa cd
para entrar no diretório em um subshell. Se o cd
for bem-sucedido, paste
será usado para criar os dados combinados. A saída da subshell é redirecionada para o seu arquivo de resultados como antes.
Como o cd
é feito em um subshell, não é necessário cd ..
, cd -
ou cd "$OLDPWD"
para "voltar atrás" para a próxima iteração.
Alternativa, para códigos mais simples:
tables=( tableNC023.txt tableNC088.txt tableNC102.txt
more tables here )
for (( i = 1; i <= 30; ++i )); do
( cd "directory$i" &&
paste "${tables[@]}" ) >"./merged_tables/tables_directory$i.txt"
done
Meu uso de for (( i ... ))
em vez de for i in {...}
é puramente baseado na preferência pessoal.