如果文件不在当前目录中,则在父目录中查找文件
Posted
技术标签:
【中文标题】如果文件不在当前目录中,则在父目录中查找文件【英文标题】: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
相当快。
感谢您的宝贵时间
【问题讨论】:
【参考方案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以上是关于如果文件不在当前目录中,则在父目录中查找文件的主要内容,如果未能解决你的问题,请参考以下文章