Não use substituição de comando simples para obter nomes de arquivos (que poderiam facilmente quebrar com espaços e outros caracteres especiais). Use algo como xargs
:
xargs -d '\n' -a list_of_files.txt cat > all_compounds.sdf
Ou um while read
loop:
while IFS= read -r file; do cat "$file"; done < list_of_files.txt > all_compounds.sdf
Para usar a substituição de comando com segurança, defina pelo menos IFS
apenas para a nova linha e desabilite o globbing (expansão de caractere curinga):
(set -f; IFS=$'\n'; cat $(cat list_of_files.txt) > all_compounds.sdf)
Os parênteses circundantes ()
devem executar isso em um subshell, para que seu shell atual não seja afetado por essas alterações.