Buka file yang ditemukan dengan perintah 'find'

12

Ini mungkin yang mudah, tapi saya tidak bisa mengetahuinya dan itu cukup banyak tidak dapat dicari. Dalam hierarki folder saya memiliki persis satu file bertipe xyz. Saya ingin menemukan file itu dan membukanya dengan perintah terminal.

find . -name *.xyz

Ini akan mengembalikan file yang saya cari. Sekarang bagaimana cara membukanya secara otomatis, tanpa mengetikkan namanya?

find . -name *xyz | open

Ini tidak berhasil. Dikatakan tidak menemukan perintah terbuka.


sumber
3
File apa itu? Jika ini bukan file yang dapat dieksekusi, Anda ingin membuka program apa dengan file itu? Oh, apa yang telah dilakukan Windows terhadap populasi kita = /
chown
Ini mungkin milik superuser ...
retracile
1
Saya menggunakan Mac, bukan Windows ... dan saya ingin membuka file dengan program default.
2
Temukan . -nama * xyz | xargs terbuka dan temukan. -name * .xyz -exec open {} \; keduanya bekerja. Terima kasih.
Saya senang Anda menemukan solusinya. Jangan lupa untuk menandai solusi yang bekerja 'terbaik' untuk Anda. Orang lain akan melihat rasio 'penerimaan' Anda dan ini sangat membantu ketika mengajukan pertanyaan di masa depan. Pengguna dengan rasio penerimaan yang lebih rendah seringkali merasa pertanyaannya diabaikan. =)
cocok

Jawaban:

10

@retracile benar. Anda perlu membukanya dengan 'sesuatu'. Namun, saya lebih suka menggunakan exec lebih dari xargs.

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

ini akan kembali cat fileFound.xyz; cat fileFound2.xyx;dll. Namun, Anda hanya berharap menemukan satu file.

Perhatikan bahwa mengubah \;ke +akan kembali cat fileFound.xyz fileFound2.xyztergantung pada kasus nanti mungkin pilihan yang disukai.

untuk lebih lanjut tentang ini saya akan mengarahkan Anda ke pertanyaan ini

cocok
sumber
6

Perintah yang Anda cari disebut xdg-open

Coba perintah Anda dengannya:

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

Anda perlu tahu program apa yang ingin Anda gunakan untuk membuka file. Jika itu gambar, Anda bisa menggunakan gwenview atau sesuatu.

Mengambil input dan mengubahnya menjadi argumen dilakukan dengan xargs. Dan Anda akan ingin melarikan diri dari wildcard itu ...

find . -name \*xyz | xargs gwenview

Dan untuk menangani spasi dalam nama file ....

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

Seperti yang telah ditunjukkan orang lain, pertanyaan Anda tidak cukup spesifik untuk dijawab dengan jelas. Jadi, menebak makna lain yang mungkin: Jika Anda bermaksud menjalankannya sebagai executable, (artinya program Anda adalah executable) beri tahu shell bahwa Anda ingin mengganti output dari perintah find sebagai bagian dari baris perintah :

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

Jika Anda ingin membuka semua file yang ditemukan finddi tab terpisah dalam satu contoh vim, Anda bisa melakukan ini:

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