2017-12-27 247 views
0

我有一個相當有趣的問題,我試圖找到最佳解決方案。我正在爲Emacs創建一個文件自動完成後端。這意味着我正在使用linux find命令獲取文件和目錄。Unix查找與目錄匹配的目錄

後端給出了部分完成的路徑的文件(如/usr/folder/foo),我要搶,可以匹配兩個目錄下(如例如部分路徑的所有文件和目錄,它可以提供foo_bar/foo_bar/barfoo_bar/bazfoo_bar/bat/foo_baz)。到目前爲止,我只去過將其分爲3個步驟

查找當前目錄下的所有文件可以通過前綴

find foo* -type f -maxdepth 1 

收集我們可能想通過

find foo* -type d -maxdepth 1 
尋找所有可能的目錄

使用每個這些目錄中,使2個電話找(我需要能夠文件和目錄區分)

find foo_bar/ -type d -maxdepth 1 
find foo_bar/ -type f -maxdepth 1 

此解決方案涉及很多撥打find(特別是因爲必須爲每個匹配的目錄調用最後一步)的。這使候選人變得緩慢,特別是在大型文件系統中。理想情況下,我只想讓一個電話獲得所有的候選人。但我還沒有找到一個好方法來做到這一點。有誰知道最佳解決方案?

回答

0

看雖然find聯機幫助頁,我結束了使用-printf

find -L foo* -maxdepth 1 -printf '%p\t%y\n' 

給我我需要的一切。只有一個命令,區分文件和目錄,搜索深度等。