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.


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


6

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

Spróbuj wykonać polecenie:

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

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

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)

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.