我正在尝试创建一个别名,当给出一些参数时,该别名将查找包含该参数作为模式的文件夹。令别名为gohf
。
现在,我将使用这个别名gohf <some-pattern>
,例如,gohf testing
。现在,这应该查找名称中包含“testing”的文件夹,并在最后一步中将我带到该文件夹。
以下是我能想到的。
alias gohf='cd `find . -type d | grep testing`';
当模式始终为“testing”时,上述别名有效。我该如何修改,以便如果别名使用为 say gohf game
,那么别名应该将我带到名称中包含游戏的文件夹。
笔记:
外壳:ksh
我假设我输入的每个模式只有一个文件夹。
答案1
正如 manatwork 在评论中所说,您应该使用函数来更好地处理参数。
gohf(){
cd $(find . -type d -iname "$1" | sed 1q)
}
不需要像使用标志那样通过管道传递find
to的结果或执行相同的操作。然后我们将整个事情通过管道传输到,以便我们只处理第一个“命中”(如果有多个)。grep
-name
-iname
sed
cd
如果您希望能够处理多个find
“点击”,您应该这样做:
gohf(){
select dir in $(find . -name "$1" -type d)
do
cd $dir
break
done
}