Il s'agit d'un exemple de structure de mon système de fichiers, j'ai des noms de dossiers dans .Text Fichier et j'appelle ce fichier dans mon script shell ou Python Comment puis-je créer cette structure de fichier récursivement et je n'ai besoin que de noms de dossiers dans la structure ci-dessous? p>
d-r-x - moka.babu HDFS 0 2018-08-23 12:58 /HCDLPRD/user d-r-x - moka.babu HDFS 0 2018-08-23 12:58 /hcdlprd/user/moka.babu d-r-x - moka.babu HDFS 0 2018-08-23 12:58 /hcdlprd/user/moka.babu/hive
4 Réponses :
Vous pouvez lire les lignes dans, diviser chaque ligne dans l'espace avec Voici un exemple avec une erreur de base Imprimera quel fichier n'a pas pu être créé: p> .split ('') code> puis indexez la dernière valeur pour obtenir le nom du dossier. Alors juste
importer os code> suivi avec
pour dossier dans les dossiers: code>
os.mkdir (dossier) code>
dans n'importe quel shell: la commande créera toute la structure. p> p>
Essayez ceci Vous pouvez voir les structures créées. p> p>
J'ai 26 000 lignes comme cette structure
Tous ceux-ci sont des annuaires?
Ils sont sortis de LS -LTR code> qui contient une tonne d'informations inutiles. Les vôtres fonctionnent parfaitement si le fichier ne contient que des chemins, ce qui ne le fait pas. Pas une frappe contre votre réponse, comme vous avez posté avant l'OP, l'OP a clarifié le contenu du fichier
Je n'étais pas sûr si le contenu du fichier a la sortie ls code> ou uniquement les chemins. Et analyser la sortie de
ls code> est fou. J'aurais utilisé
trouver code> pour obtenir la structure à la place.
OP a déclaré que ceci divisera chaque ligne en morceaux par plusieurs espaces et envoyer le Nom de fichier (dans la colonne 9) au fichier, cédant les éléments suivants: p> en python: p> Vérifiez la réponse de Hansolo, car cela sera effectivement le même P> Dans le cas où vous avez un dossier:
/hcdlprd/user/head/some/dir/file.txt/dir/file.txtock/dir/file.txtocke au cas où LS -LTR code> a été explicitement copié dans un fichier. Nous pouvons le nettoyer avec
awk code> d'abord pour obtenir simplement les fichiers dans le fichier p>
à bash < / H2>
EDIT: Si un dossier dans un répertoire pourrait ne pas h2>
tête code> n'a pas été créé par le script avant em> cette ligne, vous pouvez créer une solution plus robuste: p>
awk code> est un peu bizarre pour conceptualiser, nous pouvons tout emballonner en python en traitant chaque ligne avec les lignes suivantes : p>
@ D-R-X - Moka.Babu HDFS 0 2018-08-23 12:58 / HCDLRD / Utilisateur Ma structure de dossier comme ceci, j'ai besoin que de dernier paramètre
Oh, vous avez donc explicitement enregistré ls -ltr code> dans un fichier
OK, mon édition au début devrait aider à obtenir le fichier dans un format plus agréable.
Merci @ c.Nivs cette structure de dossiers dans un environnement de cluster, je reproduit ce même cluster, j'ai donc essayé de trouver tous les fichiers à l'aide de HDFS DFS -LS -R / PROD | grep "^ d" >> /tmp/a.txt, ce fichier A.txt est supérieur à un. Maintenant, je n'ai besoin que de noms de fichiers dans ce fichier.Je DNT Besoin de tous les paramètres.
La commande awk code> devrait faire cela
J'ai ajouté une implémentation de python de ce que awk code> fait au bas de ma réponse
dans le système de fichiers Hadoop awk ne fonctionne pas?
Donc, la question doit être intitulée Comment créer des dossiers dans HDFS i> pas Comment créer des dossiers en python / coquille i> et marquée en conséquence
Merci pour l'aide, j'avais besoin de python ou de shell uniquement parce que je dois exécuter ces fichiers à Linux env
Vous pouvez tuyer ls -ltr code> à partir de
hdfs dfs code> à
awk code> comme les suivants:
HDFS DFS -LS -R / PROD | Awk -f '[[: Espace:]] +' 'NR> 1 {IMPRESSION 9 $}' >> quelquefile.txt code>. Cependant, il est considéré comme une mauvaise pratique de tuyer
ls code>
Comment le fichier .txt a-t-il l'air explicitement?
mes lignes comme celle-ci à 20k ci-dessus
@ C.Nivs Yeah Posté Pic, juste vérifier