Cómo catalogar un file con las opciones "o"

Tengo un nombre de file como

/etc/auto.abc on server 1 /etc/auto.def on server 2 /etc/auto.ghi on server 1 

Estoy escribiendo una sola secuencia de commands para todos los serveres y en eso quiero cazar el file.

Ejemplo: cat /etc/auto.abc o /etc/auto.def o /etc/auto.ghi . Debería poder tomar el file que está presente.

Gracias,

¿Por qué no utilizar un script para verificar la existencia del file antes de intentar ejecutar una operación en él?

 #!/bin/bash if test -f "/etc/auto.def"; then cat /etc/auto.def; elif test -f "/etc/auto.ghi"; then cat /etc/auto.ghi; elif test -f "/etc/auto.abc"; then cat /etc/auto.abc;fi 

Fuentes:

http://www.shellhacks.com/en/HowTo-Check-If-a-File-Exists

http://www.thegeekstuff.com/2010/06/bash-if-statement-examples/

Algo como esto:

 if [[ $(find . -name "auto*" -type f -maxdepth 1 -printf '\n' | wc -l) -eq 1 ]] then cat auto* else echo there are more files that match 'auto*' fi 

-printf '\n' está ahí para manejar nombres de files que contienen nuevas líneas correctamente (ver esta respuesta ). En else , debes manejar la situación si hay más de 1 file que coincida con el patrón auto* : es tu decisión qué hacer aquí.

¿Has considerado usar files globs ?

La forma más permisiva sería:

 cat /etc/auto* 

Pero mejor en tu caso sería:

 cat /etc/auto.??? 

Por supuesto, si pudiera haber otros files no deseados que coincidan con ese glob, o si podría haber más de uno de los tres files presentes (y solo quiere uno), esto no tiene en count todas esas posibilidades. Pero ciertamente es la forma más simple .