hdfs: saída ls dividida

0

no hdfs, a saída do comando ls tem esta aparência:

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

Eu recuperaria todos os nomes de subdiretórios dentro de /data por um shell de script,

Como posso fazer isso?

    
por HISI 06.04.2018 / 11:07

1 resposta

1

Supondo que nenhum outro campo na saída inclua / e nenhum diretório ou nome de arquivo contenha uma nova linha, você poderia fazer:

hdfs dfs -ls | grep '^d' | cut -d/ -f3
  • O comando grep seleciona linhas que começam com d , marcando diretórios
  • o cut commend escolhe o terceiro campo separado por / (sendo o primeiro a informação até o caminho do arquivo, o segundo o nome do diretório data )

Alternativa Awk:

hdfs dfs -ls | awk -F/ '/^d/{print $3}'
    
por muru 06.04.2018 / 11:55