在父目录中查找文件,如果它不在当前目录中

时间:2013-01-21 08:36:34

标签: shell zsh

我正在尝试创建一个shell函数来查找当前目录中存在的文件。如果当前目录文件不存在,则应该尝试使用父目录,然后转到文件系统的根目录(上升到〜应该绰绰有余)。

我想要实现的是在我的提示符上显示用于项目的rails版本上的当前ruby。简单的方法是调用bundle show rails并解析字符串,但速度很慢;所以我想解析包含版本信息Gemfile.lock的文件。我目前只有在项目的根目录(Gemfile.lock所在的地方)时才能工作。

这也可用于解析git配置文件,但git config非常快。

感谢您的时间

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

请参阅以下两个有用的链接以了解您的解决方案。

Get parent directory of current directory in Ruby

How to check for file existence

):

相关问题