列出除一个以外的所有目录

时间:2013-02-21 14:20:30

标签: linux bash shell

我有以下目录结构

libs logs src etc .........
  |-- logs
  |-- src
  |-- inc

"日志"目录到处都是。所以我想列出除" logs"之外的所有目录。什么是shell命令。

这样的东西
#!/bin/bash
for dir in `find * -type d`; do
    if [[ ${dir} != "{logs}*" ]]; then
        echo ${dir}
    fi
done

但这似乎不起作用。

此致 Farrukh Arshad。

2 个答案:

答案 0 :(得分:4)

与其尝试使用支票一次处理这些内容,为什么不获取所有目录,只过滤掉您不想要的目录:

find * -type d | egrep -v '^logs/|/logs/'

grep只会删除开头包含logs/或任何地方/logs/的行。

这比逐个单独检查每个目录要快得多。

答案 1 :(得分:2)

如上述评论中所述,您可以使用egrep和|分开模式或类似下面在find

中定义它们
 find . -type d -print
.
./logs1
./test
./logs


$ find . -type d -not -name logs -not -name logs1  -print
.
./test