「検索」パラメータを変数に保存する

「検索」パラメータを変数に保存する

次のbashコマンドを実行しています。

find . \( -iname '*.aif' -o -iname '*.pdf' -o -iname '*.exe' -o -iname '*.mov' \
    -o -iname '*.doc' \) -exec rm -f {} \;

find後でスクリプトの別の呼び出しで同じパラメーターを実行します。\( -iname '*.aif' -o -iname '*.pdf' -o -iname '*.exe' \ -o -iname '*.mov' -o -iname '*.doc' \)部品を変数に保存する方法はありますか?

ベストアンサー1

ksh、bash、またはzshは配列変数を使用します。

find_parameters=(\( -iname '*.aif' -o … -iname '*.doc' \))
find . "${find_parameters[@]}"

他のシェルには良い方法はありません(複雑で壊れやすい方法がありますが、必ずしも必要でない限りお勧めできません)。単一の配列が必要な場合は、位置引数を使用できます。

set \( -iname '*.aif' -o … -iname '*.doc' \)
find . "$@"

おすすめ記事