複数のディレクトリの検索と除外 - z/OS USS リージョン

複数のディレクトリの検索と除外 - z/OS USS リージョン

z/OS (メインフレーム・バージョン 2.1) Unix システム・サービス領域で、次のように find に関連したコマンドを実行しようとしました。

次のディレクトリ構造があるとします。

/tmp
    /dir1-include
    /dir2-exclude
    /dir3-include
    /dir4-exclude

dir1-include90日より古いすべてのファイルの合計を計算しようとしていますdir3-include。次のコマンドが機能しないようです。

find /tmp/ \( -path /dir2-exclude -prune -o \
                  -path /dir4-exclude -prune \
               \) \
               -o -type f -mtime +90 | wc -l

それは私に以下を与えます:

FSUM6372 Unknown option "-path"
Usage: find directory ... expression`

答え1

これを行う方法はいくつかあります。以下のオプションはすべてz / OSに適用されます。

findこれをサポートしておらず、ファイル-path名に改行文字(パイプ接続)が含まれていないと仮定すると、wc以下を使用して問題を解決できますgrep

find /tmp/ -type f -mtime +90 | grep -v /tmp/dir2-exclude | grep -v /tmp/dir4-exclude | wc -l

除外するディレクトリがパターンを共有する場合(保持する項目を除外せず)、次のように単純化できます。

find /tmp ... | grep -cv '/tmp/dir.*-exclude'

...ディレクトリまたはファイル名に改行文字が含まれていると、findの出力が誤って評価されることをもう一度理解してください。

find複数の開始パスをサポートし、含めるパスがパターンを共有する場合は、次の方法で問題を解決できます。

find /tmp/dir*-include -type f -mtime +90 | wc -l

また、-pruneオプションは上記のディレクトリの下に落ちません。

find /tmp/ -type d -name "/dir2-exclude" -prune -o -type d -name "/dir4-exclude" -prune -o -type f -mtime +90 | wc -l

関連情報