2016-07-24 207 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