1. ホーム
  2. bash

[解決済み] find を使ってサブディレクトリを除外する

2022-07-14 06:37:58

質問

私は以下のようなディレクトリ構造を持っています。

data
|___
   |
   abc
    |____incoming
   def
    |____incoming
    |____processed
   123
    |___incoming
   456
    |___incoming
    |___processed

Dataディレクトリ内のすべてのフォルダの中にincomingサブフォルダがあります。def/incomingと456/incomingディレクトリを除くすべてのフォルダとサブフォルダからすべてのファイルを取得したいのです。 私は次のコマンドで試してみました。

 find /home/feeds/data -type d \( -name 'def/incoming' -o -name '456/incoming' -o -name arkona \) -prune -o -name '*.*' -print

と表示されますが、期待通りに動作しません。

Ravi

どのように解決するのですか?

これは動作します。

find /home/feeds/data -type f -not -path "*def/incoming*" -not -path "*456/incoming*"

説明

  • find /home/feeds/data : 指定されたパスから再帰的に検索を開始する
  • -type f ファイルのみ検索
  • -not -path "*def/incoming*" : 何も含めず def/incoming をパスの一部として含めることはできません。
  • -not -path "*456/incoming*" : には何も含めないでください。 456/incoming をパスの一部として含めることはできません。