2016-07-24 2 views
0

Когда find перебирает каталоги, они отображаются в the order the VFS yields them. Может ли этот порядок быть изменен на первые дорожки каталогов, прежде чем смотреть на файлы, расположенные рядом с ними?directory-first-search with find

Опция -depth не является решением проблемы. Он изменяет только

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

в

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

(Обратите внимание, как только вторая и третья выходная линия поменялась местами.)

Этот вопрос вместо ищет способ произвести следующий порядок.

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

ответ

0

Вы можете получить свой индивидуальный выход с помощью 2 find команды. Сначала find получит все, используя -depth, за исключением файлов в текущем каталоге, а второй find получит только файлы с текущего уровня.

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

Многообещающий подход, но он еще не работает рекурсивно. Поддиректории также должны отображаться перед файлами, расположенными рядом с ними. Однако объединение двух 'find 'вместе через' -exec' могло бы работать. – XZS

+0

В моих подкаталогах поиска gnu появляются перед файлами стартового каталога – anubhava

+0

В моей системе, которая представляет собой поиск GNU над tmpfs в ядре 4.6.4, 'mkdir -pa/b/c',' touch a/d', за которым следует '{find. -depth -mindepth 1; найти . -maxdepth 1 -depth-type f; } | tr '\ n', 'output' ./a/d,./a/b/c,./a/b,./a,'. Файл 'a/d' появляется перед каталогом sibling' a/b'. – XZS