![Linux の 'test' ディレクトリを除くディレクトリ内のすべての '.c' および '.h' ファイルを検索します](https://rvso.com/image/1457436/Linux%20%E3%81%AE%20'test'%20%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E9%99%A4%E3%81%8F%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20'.c'%20%E3%81%8A%E3%82%88%E3%81%B3%20'.h'%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%97%E3%81%BE%E3%81%99.png)
ディレクトリ内のすべての .c ファイルと .h ファイルを検索します。ただし、「test」フォルダー内のファイルは除きます (複数あります)。
検索しているディレクトリには、次のようなテスト ディレクトリがあります。
myDirectory/abc/def/test
myDirectory/abc/def/ghi/test
等
これまで試したこと:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -print
これは .c ファイルでは機能するようです。ただし、次を実行すると:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -o -name '*.h' -print
何も返されません。
複数のファイルタイプを含めるにはどうすればよいですか?
答え1
2 つの述語をグループ化する必要があります-name
。
find /myDirectory/* -type d -name test -prune -o \( -name '*.c' -o -name '*.h' \) -print
括弧をエスケープするにはバックスラッシュが必要です。