findコマンドの出力からクリーンアップディレクトリ名を削除します。

findコマンドの出力からクリーンアップディレクトリ名を削除します。

私はfindコマンドを使用して、ディレクトリといくつかのサブディレクトリにあるソースファイルのリストを生成しようとしています。例:

/Source_Files
    /dontexclude
        dontexclude.h
        dontexclude.c
    /exclude
        exclude.c
        exclude.h
    main.c
    test.c
    test.h

「.c」と「.h」で終わるファイルのリストを望み、/excludeサブディレクトリの内容を除外したいと思います。

find -name '*.c' -o -name '*.h' -o -path '*/exclude' -prune次の出力を生成します。

./test.h
./exclude
./test.c
./main.c
./dontexclude/dontexclude.c
./dontexclude/dontexclude.h

find"./exclude"なしで上記のリストをどのように生成できますか?

ベストアンサー1

find . -name excludeme -prune -o \
  \( -name '*.c' -o -name '*.h' \) -print

覚えてくださいそして(暗黙的に)優先順位があります。または-o)。 (あなたも確認できます-name '*.[ch]'

おすすめ記事