2013-01-21 191 views
1

我正在嘗試在當前目錄中查找文件存在的shell函數。如果該文件不存在,如果當前的目錄,它應該嘗試父目錄,並上到文件系統的根目錄(應該是綽綽有餘)。在父目錄中查找文件(如果它不在當前目錄中)

我想要實現的是在提示符上顯示當前用於項目的rails版本的ruby。簡單的方法是調用bundle show rails並解析字符串,但速度很慢;所以我想解析包含版本信息的文件Gemfile.lock。我目前只在項目的根目錄下(Gemfile.lock所在的地方)工作。

這也可以用來解析一個git配置文件,雖然git config是相當快的。

感謝您的時間

回答

2

是這樣的?

#!/bin/zsh 

# the function  
findfile_parent() { 
FILE=$1 
while [ ! -e "${FILE}" ]; do 
    if [ "$(pwd)" = "/" ]; then 
    return 
    fi 
    cd .. 
done 
echo "$(pwd)/${FILE}" 
} 

# usage example 
SEARCHFILE=foo.pyl 
UPFILE=$(findfile_parent ${SEARCHFILE}) 
if [ "x${UPFILE}" != "x" ]; then 
echo "found file ${SEARCHFILE} as ${UPFILE}" 
else 
echo "couldn't find file ${SEARCHFILE}" 
fi 
+0

這似乎是工作。非常感謝 ! – ksol

相關問題