27
A
回答
16
是的,有點。
您可以使用-depth
選項使它在目錄本身之前處理目錄的內容。您也可以使用-maxdepth
選項來限制它將鑽取的目錄數量。
+2
「排序」是正確的 - 這仍然不是真正的廣度優先搜索,因爲a/b/c將在a/d之前訪問。不過,對於大多數用途來說,這已經足夠了 – ephemient 2009-07-06 15:09:59
4
使用find
與--maxdepth
選項。
這就是參考頁面的Directories部分;可能會根據您的需求找到更適合的其他選項。
要實現精確寬度首先搜索,您需要循環混合使用--mindepth
和--maxdepth
選項。但是,我認爲沒有必要這麼做,深度搜索通常就足夠了。
7
可怕的黑客,不會-0
或大於-print
,效率低下,等等等等其他任何行動工作...
#!/bin/bash
i=0
while results=$(find -mindepth $i -maxdepth $i "[email protected]") && [[ -n $results ]]; do
echo "$results"
((i++))
done
基本上這只是運行
find -mindepth 0 -maxdepth 0
find -mindepth 1 -maxdepth 1
find -mindepth 2 -maxdepth 2
…………………………………………………………………………
直到find
返回非零狀態或打印任何東西。
5
使用變量作爲隊列的寬度優先查找。
創建bfs.sh
#!/bin/bash
queue="$1"
shift
while [ -n "$queue" ]
do
echo "$queue" | xargs -I'{}' find {} -mindepth 1 -maxdepth 1 $*
queue=`echo "$queue" | xargs -I'{}' find {} -mindepth 1 -maxdepth 1 -type d`
done
使其可執行:
$ chmod u+x ./bfs.sh
然後,你可以做一個廣度優先找到:
$ ./bfs.sh /path/to/somewhere -name foobar
0
find . | awk '{FS = "/" ; print "", NF, $F}' | sort -n | awk '{print $2}' | xargs grep -d skip "search term"
它使用find來列出所有文件。第一個awk命令計算所有'/'字符。它對計數進行排序,然後刪除計數列。最後它使用xargs來grep排序的文件列表。
這真的很醜。
相關問題
- 1. 深度優先搜索和圖形上的寬度優先搜索
- 2. 廣度優先或深度優先搜索
- 3. 廣度優先搜索和深度優先搜索
- 4. 具有固定停止距離的寬度優先搜索
- 5. 廣度優先搜索或深度優先搜索在特定深度找到兒童?
- 6. 廣度優先搜索java.lang.NullPointerException
- 7. LISP - 廣度優先搜索
- 8. java深度優先搜索
- 9. OCAML深度優先搜索
- 10. 使用寬度優先搜索的連接組件
- 11. 如何實現廣度優先搜索?
- 12. 何時使用深度優先搜索
- 13. 滲透,深度優先搜索或聯盟查找的最佳方法?
- 14. 深度優先搜索確定深度
- 15. 廣度優先與深度優先搜索的輸入/輸出
- 16. 寬度優先樹
- 17. 寬度優先c
- 18. 使用寬度優先搜索在圖中找到週期的僞代碼
- 19. 試圖得到一個計劃深度優先或廣度優先搜索柯里功能工作
- 20. 寬度首先搜索鄰接矩陣
- 21. C++有向圖深度優先搜索
- 22. Java算法深度優先搜索
- 23. 深度優先搜索無堆
- 24. 廣度優先搜索算法方程
- 25. 深度優先搜索指令
- 26. 深度優先搜索(圖形方法)
- 27. 深度優先搜索算法
- 28. 深度優先搜索算法序言
- 29. 在Python中的深度優先搜索
- 30. java中的深度優先搜索
如果你還在尋找這樣的東西,我寫了[this](https://github.com/tavianator/bfs) – 2016-04-05 20:37:39
並掌握** find **命令的「prune」選項你在這裏。在某種程度上陷入困境時沒有意義 - 當你知道目標文件或目錄時,首先尋找一些根深蒂固,高度填充的目錄子樹,而不是找到它。 – 2014-03-11 15:23:58