如何通过Shell脚本创建显示所有目录的命令?

问题描述 投票:0回答:1

我想创建一个命令,以显示作为参数给出的目录中的所有目录。例如,如果我们的文件层次结构是这样的:

dir1:
    dir2
    dir3
    file1
    dir4:
        file2
        dir5

然后rep dir1的结果应显示为:

dir2
dir3
dir4

rep dir1/dir4应显示:

dir5

此刻,我有一个shell脚本rep.sh正在执行以下操作:

function rep(){
    all=`ls $1`
    for each in $all
    do 
        if [ -d $each ]
        then
            echo $each
        fi
    done
}

通过bash rep.sh执行此脚本不会执行任何操作,我认为这是正确的,但是当我执行rep dir1rep dir1/dir4时,它不会显示任何内容。我认为我的错误在于我没有正确使用函数环境,或者我没有正确传递参数。

shell directory command sh command-line-arguments
1个回答
0
投票

您可以使用findfind

basename

选项basename阻止进入子目录。 ... find "$1" -maxdepth 1 -type d -exec basename {} \; ... 应用过滤器,以便仅列出目录,-maxdepth 1对找到的项目执行-type d-exec basename {} \;删除路径,以便仅打印目录名称本身。

© www.soinside.com 2019 - 2024. All rights reserved.