2016-09-08 2 views
1

Nach Number of subdirectories in a directory? versuche ich jetzt nur die Verzeichnisse zu berücksichtigen, die mit einer Nummer beginnen.Anzahl der Verzeichnisse suchen, die mit einer Nummer beginnen

Zum Beispiel, wenn ich tun:

hadoop fs -ls -R foo_dir | grep "^d" | wc -l 

für:

foo_dir/18740802-Parthenon.dat.bz2

foo_dir/98740802-Whitby Abbey.dat.bz2

foo_verz/photos_collect.bz2

Ich werde 3 als Ergebnis erhalten. Wie man dieses Verzeichnis filtert, um 2 zu erhalten (Idee: prüfen, ob der erste Buchstabe des Artikels 1-9 ist)?

+0

Ja, ich habe volle Rechte an alles @ JefréN.! – gsamaras

+0

Gute Frage @ JefréN., Weil ich Ihre Antwort in einem Spielzeugverzeichnis angewendet habe, das ich lokal erstellt habe und es hat funktioniert. Ja, der Befehl wird vom Gateway in ein komplett anderes Verzeichnis ausgeführt! Wie '/ some_dir/foo_dir' – gsamaras

+0

gab Erklärung. –

Antwort

3

würde ich so etwas wie dies versuchen:

... ls -R foo_dir | grep "/[0-9][^/]*$" -c 

Regex Erläuterung:

/ ist das Verzeichnis Separator auf Linux-Systemen.
[0-9] passt zu jeder Ziffer.
[^/]* entspricht null oder mehr Zeichen, die nicht Verzeichnisseparatoren sind.
$ entspricht dem Ende einer Zeile.

Daher passen wir jedes Verzeichnis oder jede Datei an, die mit einer Ziffer beginnt und der letzte Eintrag im Dateipfad ist.


PS: Die -c arguement zu grep Ursachen grep die Anzahl der passenden Linien zu drucken.

Verwandte Themen