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
,而不必以后再提取它们?
答案 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 -