Abrir archivo encontrado con el comando 'buscar'

12

Probablemente sea fácil, pero no puedo entenderlo y no se puede buscar. En una jerarquía de carpetas tengo exactamente un archivo de tipo xyz. Quiero encontrar ese archivo y abrirlo con un comando de terminal.

find . -name *.xyz

Esto devolverá el archivo que estoy buscando. Ahora, ¿cómo lo abro automáticamente, sin escribir el nombre?

find . -name *xyz | open

Esto no funciona Dice que no encontró el comando abierto.


fuente
3
¿Qué tipo de archivo es? Si no es un archivo ejecutable, ¿con qué programa desea abrir el archivo? Oh que Windows ha hecho a nuestra población = /
chown
Esto probablemente pertenece al superusuario ...
retroceda el
1
Estoy en una Mac, no en Windows ... y quiero abrir el archivo con el programa predeterminado.
2
encontrar . -name * xyz | Los xargs se abren y se encuentran. -name * .xyz -exec abierto {} \; Ambos trabajaron. Gracias.
Me alegra que hayas encontrado una solución. No olvide marcar la solución que mejor funcionó para usted. Otros verán su relación de 'aceptación' y esto es muy útil cuando haga preguntas futuras. Los usuarios con un índice de aceptación más bajo a menudo encuentran que sus preguntas son ignoradas. =)
matchew

Respuestas:

10

@retracile es correcto. Necesitas abrirlo con 'algo'. Sin embargo, prefiero usar exec sobre xargs.

find . -name '*.xyz' -exec cat {} \;

esto devolverá cat fileFound.xyz; cat fileFound2.xyx;etc., sin embargo, solo espera encontrar un archivo.

tenga en cuenta que cambiar \;a +volvería cat fileFound.xyz fileFound2.xyzdependiendo del caso, la opción preferida más tarde.

para más información sobre esto, le dirijo a esta pregunta

Matchew
fuente
6

El comando que estás buscando se llama xdg-open

Prueba tu comando con él:

xdg-open "$(find . -name '*xyz' | head -n1)"
static_rtti
fuente
6

Necesita saber qué programa desea usar para abrir el archivo. Si es una imagen, puede usar gwenview o algo así.

Tomar entrada y convertirla en argumentos se realiza con xargs. Y querrás escapar de ese comodín ...

find . -name \*xyz | xargs gwenview

Y para manejar espacios en nombres de archivos ...

find . -name \*xyz | xargs -d"\n" gwenview
retroceder
fuente
2

Como otros han señalado, su pregunta no es lo suficientemente específica como para responderla claramente. Entonces, adivinando otro significado posible: si quiere decir que desea ejecutarlo como un ejecutable, (lo que significa que su programa es un ejecutable) dígale al shell que desea sustituir el resultado del comando find como parte de la línea de comando :

$(find . -name *.xyz)
mkj
fuente
0

Si desea abrir todos los archivos encontrados finden pestañas separadas en una sola instancia de vim, puede hacer esto:

find . -name \*xyz | xargs vim -p
Cory Klein
fuente