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

时间:2019-01-17 12:45:08

标签: bash ls

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/

有什么办法可以使我a1t01t01,而不必以后再提取它们?

3 个答案:

答案 0 :(得分:3)

查找目录子树的标准命令还是find . -type d,您可以对其进行调整并添加一些过滤条件。

答案 1 :(得分:0)

我不知道要执行此操作的ls选项。

您可以尝试

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

由于(...),这将启动一个新的子Shell,并在此子Shell中更改为目录.../209_repo,然后执行ls

该命令之后,您仍位于以前的目录中,因为更改目录仅在子Shell中执行。

答案 2 :(得分:0)

类似于@ user7369280,但没有子shell

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

编辑

要缓解ls命令失败的情况,然后返回到wd:

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