如何只获取选定的目录名称

时间:2016-04-26 10:40:24

标签: linux shell unix

我在主目录REPORT中有子目录。子目录包括TESTTEST_LNKFAILFAIL_LNKPASSGOODGOOD_LNK

现在我需要名称中没有_LNK的子目录。

示例:

我只需要这些目录TEST,FAIL,PASS,GOOD

我有一个代码,它将提供主目录中的所有子目录。

ls -lrt | egrep '^d' | awk '{print $9}

任何人都可以通过修改上述命令来帮助我通过_LNK获取子目录吗?

3 个答案:

答案 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表示仅在子目录中搜索(一级)。