以下のようにKornスクリプトにコマンドがあります。
find <path1> <path2> <path3> -name filename
その後、出力をtxtファイルに保存します。このtxtファイルを使用すると、いくつかの操作が行われます。
必要なファイルがpath1で見つかった場合、findコマンドがpath2とpath3で検索されずに停止するようにこれを使用する方法はありますか?
-quitオプションを試してみましたが、-quit
IBM 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
それを見つけることができる最上位ディレクトリが含まれます。