Birden çok içerme ve hariç tutma için tree komutu


33

Lütfen sonucu aşağıdaki gibi filtrelemek için tree komutunu kullanmama örnek verebilir misiniz:

  • (demek dizinleri görmezden bin, unitTest)
  • Sadece uzantıları olan belirli dosyaları listeleme (diyelim .cpp, .c, .hpp, .h)
  • yalnızca ölçüt ile eşleşen sonuç dosyalarının tam yol adlarını sağlama.

Yanıtlar:


54

Bir yol, -Ive -Panahtarlarıyla kalıp kullanmaktır :

tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/

-fHer dosya için tam yolunu basar ve -Idesende dışlar dosyaları burada dikey bir çubuk ile ayrılmış. -PAnahtar inlcudes sadece dosyalar belli bir uzantısı eşleşen deseni listelenen.


6
Not: -I bayrağınıza eğik çizgiler eklemeyin, örneğin -I bindeğil -I bin/.
ThorSummoner 11:15

bu bir hata yaparsed: illegal option -- I
François Romain

4

use findve treecommand prune, search dizinlerini dışlamak tree -Pve kalıp aramak için kullanmak için use 's komutunu kullanır .

Kuru erik düğmesini kullanın, örneğin miscdizini dışlamak istiyorsanız, sadece -path ./misc -prune -ofind komutunuza bir a ekleyin .

örneğin find . -path ./misc -prune -o -exec tree -P <pattern> {} \;ya da kullanabilirsiniz-name "*.cpp" in find

birden fazla dizini hariç tutmak için

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o


Benim için, find ile örnek "find: '-o' sonra bir ifade bekleniyor" hatası veriyor
WebComer 18:18

denedin mi find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -oya dafind . -path ./misc -prune -o -exec tree -P *.cpp {} \;
harish.venkat

2

Gerçek çözüm, tam yol çıktısı almak, istenmeyen yolları filtrelemek ve son olarak çıktıları düzeltmektir.

tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'

Tüm dosyalar çıktıda gerekliyse, "d" parametresini kaldırın.

Japonca anlayabiliyorsanız, http://qaon.net/press/archives/572 adresinde ayrıntılı bir açıklama bulunabilir .


-f bayrağı süper yararlı!
Michael Dimmitt
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.