代码之家  ›  专栏  ›  技术社区  ›  user8314628

如何只使用ls命令获取目录的名称?

  •  0
  • user8314628  · 技术社区  · 6 年前
    xxxx:~/209_repo> ls -d */
    drwx------ 4 xxxx student 4.0K Jan 16 12:44 a1/
    drwx------ 2 xxxx student 4.0K Jan 11 14:06 t01/
    drwx------ 2 xxxx student 4.0K Jan 17 06:50 t02/
    

    这个工作正常。但是,当我转到209诳repo的子目录时,它会给出一个路径,而不是目录名。

    xxxx:~/209_repo/t02> ls -d /student/xxxx/209_repo/*/
    drwx------ 4 xxxx student 4.0K Jan 16 12:44 /student/xxxx/209_repo/a1/
    drwx------ 2 xxxx student 4.0K Jan 11 14:06 /student/xxxx/209_repo/t01/
    drwx------ 2 xxxx student 4.0K Jan 17 06:50 /student/xxxx/209_repo/t02/
    

    我有什么办法吗 a1 , t01 , T01 只是为了以后不必提取它们?

    3 回复  |  直到 6 年前
        1
  •  0
  •   Ralf    6 年前

    我不知道 ls 选择这样做。

    你可以试试

    (cd /student/xxxx/209_repo && ls -d */)
    

    由于 (...) 在这个子shell中更改目录 .../209_repo 然后执行 LS .

    命令之后,您仍然在之前所在的目录中,因为更改目录只在子shell中执行。

        2
  •  3
  •   Honza P.    6 年前

    或标准命令来查找目录的子树也是 find . -type d 你可以调整它并添加一些过滤。

        3
  •  0
  •   asimovwasright    6 年前

    类似于@user7369280,但没有子shell

    cd /student/xxxx/209_repo/ && ls -d */ && cd -

    编辑

    为了减轻失败的ls命令,并返回到wd:

    cd /student/xxxx/209_repo/ && ls -d */ && cd - || cd -