2012-05-07 8 views
5

Estoy tratando de usar grep para localizar automáticamente el programa bibtex en la carpeta bin del usuario.¿Cómo puedo forzar a grep a que solo devuelva archivos e ignore los directorios?

El problema es que con frecuencia devuelve un directorio con el nombre bibtex, lo que significa que la secuencia de comandos no ejecuta automáticamente el comando.

¿Cómo puedo forzar grep (o incluso el comando locate) para ignorar automáticamente los directorios?

EDIT: El comando actual es: locate bibtex | grep "/bibtex$" -d skip | head -n1

Respuesta

1

Suspiro, no es el más limpio, pero funciona. perl -ne 'chomp($f=$_);print if !-d $f'

lo que hace que su comando locate bibtex | perl -ne 'chomp($f=$_);print if !-d $f' | grep "/bibtex$" -d skip | head -n1

+0

'-d skip' no realiza ninguna acción aquí ya que la entrada a' grep' es 'stdin'. Puedes acortar tu comando a 'perl -ne 'chomp; imprimir si! -d'' –

+0

Esa fue mi primera ejecución, pero no estaba seguro si las líneas de alimentación faltantes causarían problemas más adelante en la cadena de tuberías. Supongo que soy una Nerly Nerly de esa manera. –

+0

Por cierto, puede acortar eso a 'perl -lne 'imprimir si! -d'' (la chomp no parece ser necesaria, si fuera entonces' perl -lne' chomp; print if! -d ' '). –

12

El comando find?

find /bin -name bibtex -type f 

Busca un nombre de archivo "bibtex" de tipo "f", que es un archivo normal.

+1

icecreamhead, acepte esta respuesta inmediatamente, cuando finalice su búsqueda :-) –

+0

Esta respuesta sí funciona, pero lleva mucho, mucho más tiempo que localizar, lo que no es ideal en esta situación – icecreamhead

4
locate --basename '\bibtex' --limit 1 

Elimina la necesidad de grep y head, pero todavía no resuelve la cuestión de si el resultado es un directorio.

¿Por qué no hacer:

type -P bibtex 

que se verá en el PATH para un programa con ese nombre?

+0

tipo -P bibtex funciona perfectamente ! – icecreamhead

2

no entiendo exactamente lo que tal vez mi solución está mal: ¿por qué no utilizar which? O bibtex no está en RUTA?

Cuestiones relacionadas