红联Linux门户
Linux帮助

如何计算目录层数

发布时间:2010-09-28 11:46:12来源:红联作者:gondn125
请问如何在Linux系统中计算当前目录所处位置的目录深度?也就是当前目录上面还有多少层目录

E.g. use script:

while [ 1 ]; do mkdir aa; cd aa; done

waiting for 5 munites

计算此时的目录深度?

谢谢先!
文章评论

共有 9 条评论

  1. gondn125 于 2010-10-05 08:06:42发表:

    呵呵,比较庆幸Linux不允许使用字符/作为文件名

  2. deepwhite 于 2010-09-30 15:08:09发表:

    引用:
    LS有点小问题,
    shell会处理多个"/"的情况,
    比如cd //////home也是合法的,
    可以在当前目录项中查找".."目录项,一直递归到顶层目录,
    奶茶dsk 发表于 2010-9-28 12:33


    cd /////home 以后, pwd 还是单个的 /home 吧。至少我这里是。

  3. 童川NO 于 2010-09-28 19:43:02发表:

    大家帮忙点一下啊,小弟在任务http://www.linuxdiyf.com/bbs/?fromuid=368556

  4. onlineuser 于 2010-09-28 17:32:32发表:

    都是强人,目前还在学习命令???

  5. gondn125 于 2010-09-28 17:03:05发表:

    Thank you for everyone here!
    写好脚本共享给大家:
    第一种,效率高,没有考虑cd //////home的情况
    #!/bin/bash
    oldLength=`expr length $PWD`
    p=$(pwd|tr -s "/" | tr -d "/")
    newLength=`expr length $p`
    a=$((oldLength-newLength));
    echo $a;

    第二种:不存在cd //////home的情况,但效率较低
    #!/bin/bash
    a=0
    p=`pwd`
    PWD="/"
    while [ "$p" != "$PWD" ];do
    cd ..
    let "a+=1"
    p=`pwd`
    done
    echo $a;

  6. 奶茶dsk 于 2010-09-28 12:33:25发表:

    LS有点小问题,
    shell会处理多个"/"的情况,
    比如[code]cd //////home[/code]也是合法的,
    可以在当前目录项中查找".."目录项,一直递归到顶层目录,

  7. wangyu 于 2010-09-28 12:06:18发表:

    试试这个

    pwd |tr -cd '/'|wc -m

  8. wangyu 于 2010-09-28 12:02:32发表:

    我找了一下,没找到合适的命令
    用pwd可以列出当前目录位置,形如/usr/local/lib等,然后统计/出现的次数,这就不知道了

  9. yi12hua 于 2010-09-28 11:58:34发表:

    受教了