我在主目录REPORT
中有子目录。子目录包括TEST
,TEST_LNK
,FAIL
,FAIL_LNK
,PASS
,GOOD
,GOOD_LNK
。
现在我需要名称中没有_LNK
的子目录。
示例:
我只需要这些目录TEST,FAIL,PASS,GOOD
。
我有一个代码,它将提供主目录中的所有子目录。
ls -lrt | egrep '^d' | awk '{print $9}
任何人都可以通过修改上述命令来帮助我通过_LNK
获取子目录吗?
答案 0 :(得分:3)
ls
具有--hide
参数,用于避免不需要的输出。使用如下:
ls --hide='*_lnk'
答案 1 :(得分:2)
这应该可以帮到你
ls -lrt | grep -v '_LNK'
答案 2 :(得分:1)
作为命令的替代方法,您可以使用find
递归查找所有子目录,然后使用grep
选择所需的目录:
find . -type d -exec echo {} \; | grep -v "_LNK"
这里的相关选项是:
-type d
:仅选择目录类型-exec
:执行以下命令 "{}"
是匹配文件的占位符,而"\;"
告诉查找命令结束的位置。
另一个选项(Toby Speight在评论中提出)是使用'!'
选项的-name
否定来完成find的所有工作:
find . -type d '!' -name '*_LNK'
此外,有maxdepth
选项允许设置递归级别是没有价值的:-maxdepth 1
表示仅在子目录中搜索(一级)。