Otwórz plik znaleziony za pomocą polecenia „znajdź”

12

Jest to prawdopodobnie łatwe, ale nie mogę tego rozgryźć i praktycznie nie można go przeszukiwać. W hierarchii folderów mam dokładnie jeden plik typu xyz. Chcę znaleźć ten plik i otworzyć go za pomocą polecenia terminalu.

find . -name *.xyz

Spowoduje to zwrócenie szukanego pliku. Jak teraz otworzyć to automatycznie, bez wpisywania nazwy?

find . -name *xyz | open

To nie działa Mówi, że nie znalazł polecenia otwarcia.


źródło
3
Co to za plik? Jeśli nie jest to plik wykonywalny, jakim programem chcesz go otworzyć? Och, co Windows zrobił naszej populacji = /
chown
To prawdopodobnie należy do superużytkownika ...
retracile
1
Jestem na komputerze Mac, a nie Windows ... i chcę otworzyć plik za pomocą domyślnego programu.
2
odnaleźć . -nazwa * xyz | xargs otwiera i znajduje. -nazwa * .xyz -exec otwórz {} \; oba działały. Dzięki.
Cieszę się, że znalazłeś rozwiązanie. Nie zapomnij zaznaczyć rozwiązania, które działało dla Ciebie „najlepiej”. Inni zobaczą twój wskaźnik „akceptacji”, co przydaje się przy zadawaniu pytań w przyszłości. Użytkownicy o niższym współczynniku akceptacji często ignorują pytania. =)
matchew

Odpowiedzi:

10

@retracile jest poprawny. Musisz to otworzyć „czymś”. Jednak wolę używać exec zamiast xargs.

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

to zwróci cat fileFound.xyz; cat fileFound2.xyx;itp., jednak spodziewasz się znaleźć tylko jeden plik.

zwróć uwagę, że zmiana \;na +zwróci w cat fileFound.xyz fileFound2.xyzzależności od przypadku, później może być preferowanym wyborem.

po więcej informacji skierowałbym cię do tego pytania

Matchew
źródło
6

Polecenie, którego szukasz, nazywa się xdg-open

Spróbuj wykonać polecenie:

xdg-open "$(find . -name '*xyz' | head -n1)"
static_rtti
źródło
6

Musisz wiedzieć, jakiego programu chcesz użyć do otwarcia pliku. Jeśli jest to obraz, możesz użyć gwenview lub czegoś takiego.

Pobieranie danych wejściowych i przekształcanie ich w argumenty odbywa się za pomocą xargs. I będziesz chciał uciec od tej wieloznacznej ...

find . -name \*xyz | xargs gwenview

I do obsługi spacji w nazwach plików ...

find . -name \*xyz | xargs -d"\n" gwenview
retracile
źródło
2

Jak zauważyli inni, twoje pytanie nie jest wystarczająco szczegółowe, aby udzielić jasnej odpowiedzi. Zgaduję więc o innym możliwym znaczeniu: Jeśli masz na myśli, że chcesz uruchomić go jako plik wykonywalny (co oznacza, że ​​twój program jest plikiem wykonywalnym), powiedz powłoce, że chcesz zastąpić dane wyjściowe polecenia find jako część wiersza polecenia :

$(find . -name *.xyz)
mkj
źródło
0

Jeśli chcesz otworzyć wszystkie pliki znalezione przez findna osobnych kartach w jednym wystąpieniu vima, możesz to zrobić:

find . -name \*xyz | xargs vim -p
Cory Klein
źródło