2

以下代码递归查找 arg1 的子目录(默认为 pwd),用数字标记每个目录或文件。然后提示用户输入一个数字,并用该数字 cd 那个目录标签(如果它是一个目录)。

但我不明白这个数字来自哪里......以及我如何控制它到达的子目录的深度......

用法来源 gd.sh gd

#!/bin/bash

function gd ()
{
local dirname dirs dir

if [ $# -gt 0 ]
then
dirname=$1
else
dirname=$(pwd)
fi

dirs=$(find $dirname -type d)

PS3=`echo -e "\nPlease Select Directory Number: "`

select dir in $dirs
do
if [ $dir ]
then
    cd $dir
    break
else
    echo 'Invalid Selection!'
fi
done

感谢帮助 :)

4

1 回答 1

1

编号来自select ... in ...指令。它为列表的每个元素添加一个数字。看man页面bash

对于第二个问题,请使用以下选项-maxdepthfind

dirs=$(find $dirname -maxdepth 2 -type d)
于 2013-11-02T22:55:48.660 回答