我有一个源代码树,其根位于类似/home/me/workspace
. 有许多子目录很多层次。特别是有一个包含一些工具的路径:
/home/me/workspace/tools/scripts
我正在编写一个 bash 函数,我可以从树中传递字符串的任何位置调用它tools/scripts
。该函数应该从当前工作目录迭代/
查找路径片段tools/scripts
,然后如果找到它,则打印出找到它的绝对路径。在本例中,/home/me/workspace
将被打印。如果根本找不到路径片段,则不打印任何内容。
我已经有以下 bash 函数可以为我执行此操作:
search_up ()
(
while [ $PWD != "/" ]; do
if [ -e "$1" ]; then
pwd
break
fi
cd ..
done
)
但这似乎有点啰嗦。我想知道是否有任何其他方法可以在 bash 本身或单个find
命令或任何其他常见实用程序中执行此操作。我特别注重可读性和简洁性。
注意我不是在寻找整个树的完整递归搜索。
我的 bash 也不是最新的,所以请不要使用最新的、最好的技巧:
$ bash --version
GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
$