xyzが正常に終了するコマンドを使用してファイルのみを検索する方法は?

xyzが正常に終了するコマンドを使用してファイルのみを検索する方法は?

与えられたコマンドを正常に終了させたすべてのファイルを見つけようとします(終了コード0)。

検索マニュアルページには -exec が記載されています。Execute command; true if 0 status is returned.

以下にリストされていますが、Actionsこれはcommand、指定された端がゼロのファイルが表示されることを意味すると仮定します。

しかし、過去の使用と試みではfind . -exec true \;結果find . -exec false \;が出てこなかったので、私が間違っていたことが証明されました。

呼び出しの例は、find . -exec ./is_dir.py {} \;見つかったすべてのディレクトリを印刷する必要があることです。 (この特別なケースについてテストできることを知っています。実際の要件を満たすテストの組み合わせが見つかりません。)

私の質問を十分に定式化できなかったため、検索結果が表示されませんでした。

答え1

あなたはできます:

find . -exec ./is_dir.py {} \; -o -print

ディレクトリを除くすべてのエントリが一覧表示されます。is_dir.py実行可能で、次の内容が含まれているとしますchmod +x is_dir.py

#!/usr/bin/env python

import sys
import os

if os.path.isdir(sys.argv[1]):
    sys.exit(0)
sys.exit(1)

is_dir.py独自の出力を生成する場合は、次のことができます。

 rm -f nondir.lst
 find . -exec ./is_dir.py {} \; -o -exec echo  {} >> nondir.lst \;

これにより、その出力は失敗した名前のリストと混在しませんis_dir.py

関連情報