hdfs: split ls output

в hdfs, вывод команды ls выглядит следующим образом:

drwxrwxr-x 5 matteorr matteorr 4096 Jan 10 17:37 /data/Cluster drwxr-xr-x 2 matteorr matteorr 4096 Jan 19 10:43 /data/Desktop drwxrwxr-x 9 matteorr matteorr 4096 Jan 20 10:01 /data/Developer drwxr-xr-x 11 matteorr matteorr 4096 Dec 20 13:55 /data/Documents drwxr-xr-x 2 matteorr matteorr 12288 Jan 20 13:44 /data/Downloads drwx------ 11 matteorr matteorr 4096 Jan 20 14:01 /data/Dropbox drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 /data/Music drwxr-xr-x 2 matteorr matteorr 4096 Jan 19 22:12 /data/Pictures drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 /data/Public drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 /data/Templates drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 /data/Videos

Я бы получил все имена подкаталогов внутри /data с помощью оболочки сценария,

How Я могу это сделать?

0
задан 6 April 2018 в 12:10

2 ответа

Предполагая, что никакое другое поле на выходе не содержит /, и никакая директория или имя файла не содержит новую строку, вы можете сделать:

hdfs dfs -ls | grep '^d' | cut -d/ -f3 Команда grep выбирает строки, начинающиеся с d, маркирующие каталоги cut commend затем выбирают третье поле, разделенное символом / (первым является информация до пути к файлу, вторая - имя каталога data)

Альтернатива Awk:

hdfs dfs -ls | awk -F/ '/^d/{print $3}'
1
ответ дан 17 July 2018 в 17:23

Предполагая, что никакое другое поле на выходе не содержит /, и никакая директория или имя файла не содержит новую строку, вы можете сделать:

hdfs dfs -ls | grep '^d' | cut -d/ -f3 Команда grep выбирает строки, начинающиеся с d, маркирующие каталоги cut commend затем выбирают третье поле, разделенное символом / (первым является информация до пути к файлу, вторая - имя каталога data)

Альтернатива Awk:

hdfs dfs -ls | awk -F/ '/^d/{print $3}'
1
ответ дан 23 July 2018 в 18:12

Другие вопросы по тегам:

Похожие вопросы: