2017-07-25 1 views
1

Supposons que j'ai un répertoire HDFS appelé myDirectory contenant nombre variable de sous-répertoires comme suit:Hadoop - Liste de tous les sous-répertoires dans un répertoire HDFS et enregistrer chaque chemin du répertoire dans une variable bash

/tmp 
    |___mainDirectory 
      |___ subDirectory1 
      |___ subDirectory2 
      . 
      . 
      |___ subDirectoryN 

Comment Je capture le chemin d'accès à chaque sous-répertoire de mainDirectory en tant que variable bash?

Par exemple, dans le cas ci-dessus, je finirais avec des variables de bash N dans lequel chaque variable ressemblerait à quelque chose comme:

var_1=/tmp/mainDirectory/subDirectory1 
var_2=/tmp/mainDirectory/subDirectory2 

..etc 

Jusqu'à présent, j'ai eu jusqu'à ce que le point où je suis awk-ing la colonne contenant les chemins de répertoire après avoir fait une hadoop fs -ls /tmp/mainDirectory

$hadoop fs -ls /tmp/mainDirectory | awk '{print $8}' 
/tmp/mainDirectory/subDirectory1 
/tmp/mainDirectory/subDirectory2 
. 
. 
/tmp/mainDirectory/subDirectoryN 

Cependant, je ne suis pas en mesure de saisir les chemins d'accès individuels dans des variables de bash séparées.

Toute aide serait grandement appréciée. Merci!

Répondre

1

si vous êtes balles pour obtenir le résultat:

$hadoop fs -ls /tmp/mainDirectory | awk '{print $8}' 
/tmp/mainDirectory/subDirectory1 
/tmp/mainDirectory/subDirectory2 
. 
. 
/tmp/mainDirectory/subDirectoryN 

Vous pouvez utiliser la commande les affecter à des variables bash,

$ declare $(hadoop fs -ls /tmp/mainDirectory | awk '{print "var_"NR"="$8}')