2016-07-24 211 views
0

find迭代目录,它们出现在the order the VFS yields them。在查看放置在它们旁边的文件之前,可以将此顺序更改为首先遍历目录吗?目录第一次搜索与查找

-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

一种很有前途的方法,但它还没有递归地工作。子目录也应出现在放在它们旁边的文件之前。虽然通过'-exec'将两个'find'链接在一起可能会起作用。 – XZS

+0

在我的gnu查找子目录确实出现在起始目录的文件之前 – anubhava

+0

在我的系统上,这是一个GNU通过内核4.6.4上的tmpfs查找,'mkdir -pa/b/c','touch a/d'后面跟着'{找到。 -depth -mindepth 1;找 。 -maxdepth 1 -depth -type f; } | tr'\ n','outputs'./a/d,。/ a/b/c,。/ a/b,。/ a,'。文件'a/d'出现在兄弟目录'a/b'之前。 – XZS