Ответ 1
Кажется, hasoop ls не поддерживает никаких параметров для вывода только имен файлов или даже только последнего столбца.
Если вы хотите надежно получить последний столбец, сначала нужно преобразовать пробел в одно пространство, чтобы затем вы могли обратиться к последнему столбцу:
hadoop fs -ls | sed '1d;s/ */ /g' | cut -d\ -f8
Это даст вам только последний столбец, но файлы со всем путем. Если вы хотите просто имена файлов, вы можете использовать basename, как предлагает @rojomoke:
hadoop fs -ls | sed '1d;s/ */ /g' | cut -d\ -f8 | xargs -n 1 basename
Я также отфильтровал первую строку, в которой говорится Found ?x items
Примечание. Остерегайтесь того, что в комментариях @felix-frank отмечает, что приведенная выше команда не будет корректно сохранять имена файлов с несколькими последовательными пробелами. Следовательно, более корректное решение, предложенное Феликс:
hadoop fs -ls /tmp | sed 1d | perl -wlne'print +(split " ",$_,8)[7]'