Может быть важно сначала заметить, что когда вы делаете some_command rh.*fs6.nii.gz
, это оболочка, которая расширяет выражение rh.*fs6.nii.gz
до списка имен файлов, которые существуют в файловой системе и соответствуют шаблону, и передает этот список * 1003. * в качестве отдельных параметров.
ls
выводит одну строку на параметр, который существует в файловой системе. echo
выводит свои параметры разделенными пробелом. Так что если вы хотите вывести файлы, разделенные пробелами, то echo
больше подходит для вашей цели, например:
echo "${OUTDIR}/${SUB}"/rh.*fs6.nii.gz "${OUTDIR}/${SUB}"/lh.*fs6.nii.gz >> practice.txt
В этом конкретном примере, как @ david-c-rankin указал, что шаблоны glob также могут помочь вам сделать команду более компактной:
echo "${OUTDIR}/${SUB}"/[lr]h.*fs6.nii.gz >> practice.txt
И не забудьте заключить в кавычки переменные, используемые в аргументах командной строки (как я делал во всех приведенных выше примерах). ).
Наконец, не рекомендуется разбирать выходные данные ls
, не забывайте всегда искать лучшие альтернативы.