2016-07-24 7 views
0

Wenn find Verzeichnisse durchläuft, werden sie in the order the VFS yields them angezeigt. Kann diese Reihenfolge in erste Verzeichnisse geändert werden, bevor Sie Dateien neben ihnen ansehen?directory-first-search mit find

Die Option -depth ist nicht die Lösung. Es ändert sich nur

$ find 
. 
./afile 
./directory 
./directory/athirdfile 
./other-directory 

zu

$ find -depth 
./afile 
./directory/athirdfile 
./directory 
./other-directory 

(Beachten Sie, wie nur die zweite und dritte Ausgangsleitung Plätze getauscht.)

Diese Frage stattdessen für eine Art und Weise versucht, die Reihenfolge zu erzeugen.

./directory/athirdfile 
./directory 
./other-directory 
./afile 

Antwort

0

Sie können unter Verwendung von 2 find Befehle Ihre angepasste Ausgabe erhalten. Erste find wird alles mit -depth außer Dateien im aktuellen Verzeichnis und 2. find bekommen nur die Dateien von der aktuellen Ebene.

{ find . -depth -mindepth 1; find . -maxdepth 1 -depth -type f; } 
+0

Ein vielversprechender Ansatz, aber es funktioniert noch nicht rekursiv. Unterverzeichnisse sollten auch vor Dateien angezeigt werden, die sich neben ihnen befinden. Die beiden 'find's zusammen über' -exec' zu verketten, könnte jedoch funktionieren. – XZS

+0

Auf meinem Gnu find Unterverzeichnisse erscheinen vor den Dateien des Startverzeichnisses – anubhava

+0

Auf meinem System, das ist ein GNU finden über eine tmpfs auf Kernel 4.6.4, 'mkdir -pa/b/c',' touch a/d' gefolgt von '{finden. -depth -mindepth 1; finden . -maxdepth 1 -dept -type f; } | tr '\ n', 'Ausgaben' ./a/d,./a/b/c,,/a/b,./a, '. Die Datei "a/d" erscheint vor dem Geschwisterverzeichnis "a/b". – XZS