ディレクトリ内のファイルを見つけたら、find コマンドを停止します。

ディレクトリ内のファイルを見つけたら、find コマンドを停止します。

以下のようにKornスクリプトにコマンドがあります。

find <path1> <path2> <path3> -name filename

その後、出力をtxtファイルに保存します。このtxtファイルを使用すると、いくつかの操作が行われます。

必要なファイルがpath1で見つかった場合、findコマンドがpath2とpath3で検索されずに停止するようにこれを使用する方法はありますか?

-quitオプションを試してみましたが、-quitIBM AIXバージョンのfindでは機能しないようです。locateシステムにコマンドがありません。インストール権限もありません。

パイプオプションを使用すると、head -1操作は実行されますが、パス2とパス3に他のファイルがなく、ファイルがパス1にのみ存在していても、すべてのパスを検索します。

ベストアンサー1

私がこれを処理する方法は、一致findするものが見つかるまで各ディレクトリで実行しながらディレクトリを繰り返すことです。

for dir in path1 path2 path3
do
    echo "Searching $dir" >&2
    match=$(find "$dir" -type f -name "filename" 2>/dev/null)
    test -n "$match" && echo "$match" && break
done

echo自動ソリューションが必要な場合は、これら2つのステートメントを削除できます。ループを終了するときに$match空でない場合は、フルパス名と$dirそれを見つけることができる最上位ディレクトリが含まれます。

おすすめ記事