5

多数のサブディレクトリを含むディレクトリがあり、それぞれに多数のファイルが含まれているとします。これらのディレクトリのうち、特定のファイルが含まれていないディレクトリを確認したいと考えています。たとえば、これらが私のディレクトリである場合:

dir/A:
    foo
    bar
dir/B:
    bar
dir/C:
    foo
dir/D:
dir/E:
    foo
    bar

を含まないすべてのディレクトリをリストしたい場合はfoo、次のようになります。

dir/B
dir/D

unixfindでこれを行うことは可能ですか、それとも別のツールを使用する必要がありますか?

4

4 に答える 4

7

もう少し調査した後、良い解決策を見つけました:

find . -type d \! -exec test -e '{}/foo' \; -print

foo探しているファイルに置き換える場所。

これにより、探しているファイルが含まれていないすべてのディレクトリのリストが出力されます。

于 2013-04-26T15:57:47.427 に答える
0
comm -3 <(find -type d) <(find -name foo -printf '%h\n')
  • すべてのディレクトリを取得する
  • を含むディレクトリのみを取得するfoo
  • 比較して、違いだけを出力する
于 2013-04-25T22:12:25.270 に答える
0

1 - 現在のディレクトリ (またはパスのどこかに) に単純な 1 ライナー スクリプトを作成します。名前を付けましょうcheck.sh:

cd "$1" && [[ ! -f "$2" ]] && pwd

2 - 上記のスクリプトに実行権限を付与します。

chmod +x ./check.sh

3 - 最後に、次の検索コマンドを使用します。

find . -maxdepth 1 -type d -exec ./check.sh '{}' foo \;
于 2013-04-25T22:17:57.900 に答える