【问题标题】:Look for a file in parent dir if it is not in current dir如果文件不在当前目录中,则在父目录中查找文件
【发布时间】:2013-01-21 08:36:33
【问题描述】:

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

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

这也可以用于解析 git 配置文件,尽管 git config 相当快。

感谢您的宝贵时间

【问题讨论】:

    标签: shell zsh


    【解决方案1】:

    喜欢这样吗?

    #!/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
    

    【讨论】:

      【解决方案2】:

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

      Get parent directory of current directory in Ruby

      How to check for file existence

      ):

      【讨论】:

      • 我已经找到了链接,但我的目标是在 shell 脚本中完成,而不是 ruby​​
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 2011-07-05
      相关资源
      最近更新 更多