5

我有以下目录结构

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。

4

2 回答 2

5

与其尝试通过检查一次处理这些事情,不如获取所有目录并过滤掉不需要的目录:

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

grep简单地删除包含logs/在开头或任何地方的行/logs/

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

于 2013-02-21T14:27:21.303 回答
2

如上述评论中所述,您可以使用 egrep 和 | 分隔模式或像下面一样在 find 中定义它

 find . -type d -print
.
./logs1
./test
./logs


$ find . -type d -not -name logs -not -name logs1  -print
.
./test
于 2013-02-21T15:56:16.267 回答