'Find' komutu ile bulunan dosyayı aç


12

Bu muhtemelen kolay bir şey, ama anlayamıyorum ve hemen hemen aranabilir değil. Bir klasör hiyerarşisinde xyz türünde tam olarak bir dosyam var. Bu dosyayı bulmak ve bir terminal komutuyla açmak istiyorum.

find . -name *.xyz

Bu aradığım dosyayı döndürür. Şimdi adı yazmadan otomatik olarak nasıl açabilirim?

find . -name *xyz | open

Bu işe yaramıyor. Açık komutu bulamadığını söylüyor.


3
Ne tür bir dosya? Bu bir yürütülebilir dosya değilse, dosyayı hangi program ile açmak istiyorsunuz? Ah, Windows'un nüfusumuza yaptığı şey = /
chown

Bu muhtemelen süper kullanıcı aittir ...
çekilme

1
Windows'da değil Mac'te bulunuyorum ... ve dosyayı varsayılan programla açmak istiyorum.

2
bulmak. -adı * xyz | xargs açın ve bulun. -name * .xyz -exec açık {} \; ikisi de çalıştı. Teşekkürler.

Bir çözüm bulduğunuza sevindim. Sizin için 'en iyi' olan çözümü işaretlemeyi unutmayın. Diğerleri 'kabul' oranınızı görecek ve gelecekteki sorular sorulduğunda bu çok yol kat edecektir. Kabul oranı daha düşük olan kullanıcılar genellikle sorularını görmezden gelirler. =)
matchew

Yanıtlar:


11

@retracile doğru. 'Bir şey' ile açmanız gerekiyor. Ancak ben xargs üzerinde exec kullanmayı tercih ediyorum.

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

bu cat fileFound.xyz; cat fileFound2.xyx;vb. dönecektir . Ancak, yalnızca bir dosya bulmayı bekliyorsunuz.

Değişen bu notu \;için +dönecekti cat fileFound.xyz fileFound2.xyzdurumda daha sonra belki tercihi bağlı.

bunun hakkında daha fazla bilgi için sizi bu soruya yönlendireceğim


6

Aradığınız komutun adı xdg-open

Komutunuzu bununla deneyin:

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

6

Dosyayı açmak için hangi programı kullanmak istediğinizi bilmeniz gerekir. Bu bir resimse, gwenview veya başka bir şey kullanabilirsiniz.

Girdi almak ve argümanlara dönüştürmek xargs ile yapılır. Ve o joker karakterden kaçmak isteyeceksiniz ...

find . -name \*xyz | xargs gwenview

Ve dosya adlarındaki boşlukları ele almak için ....

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

2

Diğerlerinin de belirttiği gibi, sorunuz net bir şekilde cevap verecek kadar belirgin değil. Bu nedenle, başka bir olası anlamı tahmin etmek: Bunu yürütülebilir olarak çalıştırmak istediğinizi kastediyorsanız (programınızın yürütülebilir olduğu anlamına gelir) kabuğa find komutunun çıktısını komut satırının bir parçası olarak değiştirmek istediğinizi söyleyin :

$(find . -name *.xyz)

0

Bulunan tüm dosyaları findayrı sekmelerde tek bir vim örneğinde açmak istiyorsanız, bunu yapabilirsiniz:

find . -name \*xyz | xargs vim -p
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.