5

次のディレクトリ構造があります

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

「logs」ディレクトリは内部のいたるところにあります。したがって、「logs」以外のすべてのディレクトリを一覧表示したいと思います。そのためのシェルコマンドは何でしょう。

何かのようなもの

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

しかし、これは機能していないようです。

よろしく、Farrukh Arshad。

4

2 に答える 2

5

これらを一度に 1 つずつチェックして処理しようとするのではなく、すべてのディレクトリを取得して、不要なものを除外してみませんか。

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

は、先頭または任意の場所にgrep含まれる行を単純に削除します。logs//logs/

これは、すべてのディレクトリを 1 つずつ個別にチェックするよりもはるかに高速です。

于 2013-02-21T14:27:21.303 に答える
2

上記のコメントで述べたように、egrep と | を使用できます。パターンを分離するか、以下のように検索ですべてを定義します

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


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