将“find”参数存储在变量中

将“find”参数存储在变量中

我正在运行以下 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[@]}"

在其他 shell 中,没有好的方法(有复杂且脆弱的方法,但我不推荐它们,除非你真的需要它们)。如果需要单个数组,可以使用位置参数:

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

相关内容