Em zsh , se você tiver os caminhos em uma matriz, como em:
files=($(paths))
(que dividiria a saída de paths no espaço, na guia nova linha ou nul) ou:
files=(${(f)"$(paths)"})
para dividir em linhas, você pode fazer:
find $^files(N) -type f -name foo.sh
Ou se você quiser restringir a diretórios:
find $^files(/N) -type f -name foo.sh
Agora, se nenhum desses arquivos existir, você poderá acabar executando:
find -type f -name foo.sh
Que com algumas implementações de find como o GNU significa procurar no diretório atual. Para evitar isso, você poderia fazer:
dirs=($^files(/N))
(($#dirs)) && find $dirs -type f -name foo.sh
Ou:
setopt cshnullglob
find $^files(/) -type f -name foo.sh
Agora, com zsh , não há necessidade real de find , você poderia simplesmente fazer:
files=($^files/**/foo.sh(.N))
Isso também teria o benefício de funcionar mesmo se esses arquivos forem iguais a ! ou -name , o que find iria sufocar.
Há uma diferença no caso em que esses arquivos são links simbólicos para os diretórios ( find não procuraria por arquivos neles, enquanto zsh seria (o que pode realmente ser o que você deseja)).