2016-03-28 10 views
1

ich Befehl bin find rekursiv durch Verzeichnisbaum zu durchsuchen, zu zählen Dateien, Größen etc ...Erhalten Datei Tiefe in Verzeichnisbaum

Jetzt muss ich Verzeichnistiefe der einzelnen Dateien erhalten. Gibt es einen portablen Weg für beide FreeBSD und CentOS?

Ich weiß, dass find in der Lage ist, tatsächliche Verzeichnistiefe zu drucken, aber leider funktioniert das nur auf CentOS, nicht FreeBSD.

Zusätzlich - ich muss Standard find Ausgang behalten ODER Verzeichnistiefe auf den Anfang der Ausgabe setzen und es von dort schneiden.

Antwort

3

Sie können die / in Pfad zählen:

$ find . -type f -exec bash -c 'echo '{}' | grep -o/| wc -l' \; 

Oder mit Dateinamen:

$ mkdir -p one/two/three four/five && touch file one/two/file one/two/three/file 
$ find . -type f -exec bash -c 'echo -n '{}' :; echo '{}' | grep -o/| wc -l' \; 
./file :1 
./one/two/file :3 
./one/two/three/file :4 
1

Versuchen Sie folgendes:

find . -type d -exec bash -c 'echo $(tr -cd/<<< "$1"|wc -c):$1' -- {} \; | sort -n | tail -n 1 | awk -F: '{print $1, $2}'