Apri il file trovato con il comando 'trova'


12

Questo è probabilmente facile, ma non riesco a capirlo ed è praticamente non ricercabile. In una gerarchia di cartelle ho esattamente un file di tipo xyz. Voglio trovare quel file e aprirlo con un comando terminale.

find . -name *.xyz

Questo restituirà il file che sto cercando. Ora come posso aprirlo automaticamente, senza digitare il nome?

find . -name *xyz | open

Questo non funziona Dice che non ha trovato il comando open.


3
Che tipo di file è? Se non è un file eseguibile, con quale programma vuoi aprire il file? Oh, cosa ha fatto Windows alla nostra popolazione = /
vestito il

Questo probabilmente appartiene al superutente ...
retracile

1
Sono su un Mac non su Windows ... e voglio aprire il file con il programma predefinito.

2
trova . -name * xyz | xargs si apre e trova. -name * .xyz -exec open {} \; entrambi hanno funzionato. Grazie.

Sono contento che tu abbia trovato una soluzione. Non dimenticare di contrassegnare la soluzione che ha funzionato "meglio" per te. Altri vedranno il tuo rapporto di "accettazione" e questo è molto utile quando poni domande future. Gli utenti con un rapporto di accettazione inferiore spesso trovano le loro domande ignorate. =)
matchew

Risposte:


10

@retracile è corretto. Devi aprirlo con "qualcosa". Tuttavia, preferisco usare exec su xargs.

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

questo restituirà cat fileFound.xyz; cat fileFound2.xyx;ecc. tuttavia, ti aspetti solo di trovare un file.

si noti che il passaggio \;a +ritornerebbe a cat fileFound.xyz fileFound2.xyzseconda del caso, forse la scelta preferita in seguito

per di più su questo ti indirizzerei a questa domanda


6

Viene chiamato il comando che stai cercando xdg-open

Prova il tuo comando con esso:

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

6

Devi sapere quale programma vuoi usare per aprire il file. Se è un'immagine, puoi usare gwenview o qualcosa del genere.

Prendere input e trasformarlo in argomenti è fatto con xargs. E vorrai scappare da quel jolly ...

find . -name \*xyz | xargs gwenview

E per gestire gli spazi nei nomi dei file ....

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

2

Come altri hanno sottolineato, la tua domanda non è abbastanza specifica per rispondere chiaramente. Quindi, indovinando un altro significato possibile: Se intendi che vuoi eseguirlo come eseguibile, (significa che il tuo programma è un eseguibile), indica alla shell che vuoi sostituire l'output del comando find come parte della riga di comando :

$(find . -name *.xyz)

0

Se si desidera aprire tutti i file trovati findin schede separate in una singola istanza di vim, è possibile farlo:

find . -name \*xyz | xargs vim -p
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.