Armazenando os parâmetros 'find' em uma variável

3

Estou executando o seguinte comando bash:

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

Estou executando os mesmos parâmetros em outra chamada para find mais tarde no script. Existe alguma maneira de armazenar a parte \( -iname '*.aif' -o -iname '*.pdf' -o -iname '*.exe' \ -o -iname '*.mov' -o -iname '*.doc' \) em uma variável?

    
por Matt Alexander 27.01.2011 / 20:55

1 resposta

2

Em ksh, bash ou zsh, use uma variável de matriz.

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

Em outros shells, não há um bom caminho (existem maneiras complexas e frágeis, mas eu não os recomendo a menos que você realmente precise deles). Se você precisa de um único array, você pode usar os parâmetros posicionais:

set \( -iname '*.aif' -o … -iname '*.doc' \)
find . "$@"
    
por 27.01.2011 / 21:21