Решение от ОП, редакция 2
Оказывается, я был довольно глупым.
Во-первых, не нужно, чтобы awk указывал путь к каждому отдельному файлу, чтобы отбросить большую часть его. Таким образом, оператор awk должен быть последним каналом.
Во-вторых, вместо обратной сортировки с помощью ls мы можем выполнить стандартную сортировку по времени и использовать tail для извлечения строк, которые нам нужны. Это гарантирует, что труба остается открытой в течение всего процесса.
Новая команда будет выглядеть так:
ls -t1 /a/path | tail -n 50 | awk -F '\n' -vpath=/prepend/path/ ''