2014-09-26 107 views
0

我有這個腳本可以輕鬆移入文件夾。 我的問題是,如果我搜索tests,但該文件夾位於我當前的文件夾和子文件夾內,如果先搜索子文件夾,它將移動到子文件夾中的測試中。但它總是應該從子文件夾結構進入「最低」匹配。有任何想法嗎?Bash在最小深度的子文件夾中查找文件夾

function f { 
    if [[ -d $(find . -name $1 -type d) ]]; then 
    cd $(find . -name $1 -type d) 
    else 
    cd $(find ~ -name $1 -type d) 
    fi 
} 
+0

你的標題說'最不深',你的問題說'最低'? – BroSlow 2014-09-26 22:39:55

+0

請注意,「-type d」搜索目錄,「-type f」搜索文件,但沒有搜索「folders」的選項......因爲它們被稱爲「目錄」! – 2014-09-26 22:53:57

回答

0

你的問題對我有點不清楚。只是在尋找類似

cd "$(find . -depth -type d -name "$1" -print -quit)" 

這將遍歷DFS秩序和cd目錄到第一個匹配$1找到。

1

試試這個腳本:

cd $(for each in `find . -name $1 -type d` 
do 
    cnt=`echo $each | sed 's:[^/]::g' | awk '{print length}'` 
    echo "$cnt $each" 
done | sort -g | awk '{print $2}' | head -1) 


  • find在for循環查找所有的目錄名稱爲$ 1
  • cnt變量計數沒有。路徑中的「/」。
  • sort -g根據cnt變量對輸出進行排序。
  • head -1返回排序列表中的第一項,它將是「最低」匹配。
+0

請注意,如果文件名有空格,這將失敗。 – BroSlow 2014-09-26 22:11:41

相關問題