我正在运行以下 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 . "$@"