我有以下目录结构
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。
答案 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