"Find" çıktısından birden fazla dosya nasıl açılır?


10

Ben böyle bir dir bulunan birden fazla dosya açabilir biliyorum:

find -name *.foo -xargs <command> {} \;

Bu işe yarar, ancak aynı anda gedit içinde bir grup metin dosyasını açmaya çalışırken, bunları art arda açar (bir dosya kapatıldığında, diğeri açılır).

Tüm bu dosyaları aynı anda açmak istiyorum. Bunu nasıl başarabilirim?

Yanıtlar:


15

İle aynı anda birden fazla dosya üzerinde hareket etmek find, kullanmak +yerine \;:

find . -name '*.foo' -exec gedit {} +

Ya da koyarsanız ≥4 bash ile zsh ile shopt -s globstarGözlerinde farklı ~/.bashrckullanabileceğiniz **/alt dizinler özyineleme:

gedit **/*.foo

Zsh ayrıca çoğu kullanımı yerine birçok glob niteleyiciye sahiptir find.


Birisi Mac OS X'te nasıl çalıştırılacağını önerebilir mi?
andilabs

@andi kendim çözdüm. Birisi daha kısa bir şey öneriyor veya SublimeText'i pencerelerden ziyade ayrı sekmelerde açmaya zorlarsa, çok apriciated olacaktır.
andilabs

@andi Bu SublimeText ile ilgili bir sorundur, ayrı bir iş parçacığı olarak sormalısınız.
Gilles 'SO- kötü olmayı bırak

Her neyse, bunun tam bash biçimi ile ilgili olduğunu düşünüyorum, çünkü örneğin çalıştırırsam open -a SublimeText admin.py forms.pyiki sekmeli bir pencerede açılır.
andilabs

2

Mac OS X bash'da şöyle bir şey çalıştırabilirsiniz:

for file in $(find . -name "*.py"); do open -a SublimeText $file; done. 

Bir dezavantajı, yeni sekme kullanmak yerine Sublime'ın yeni penceresinde açılmasıdır.


0

Bence bu durumda

find ./ -name \*.foo | xargs gedit

1
Dosya adı özel karakterler (boşluk veya \'") içeriyorsa xargsbu findçalışmaz , çünkü girdisinin üretilmeyen bir şekilde alıntılanmasını gerektirir . Ya kullanın find … -print0 | xargs -0 …veya daha basit kullanın find … -exec … {} +.
Gilles 'SO- kötü olmayı bırak

Ayrıca, bu durumda geçerli olmasa da, -print0 | xargs -0stdin'in gobbled ve artık terminale bağlanma sorunu var. Metin modu düzenleyicisi kullanmaya çalışıyorsanız bir sorun var.
derobert
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.