Dizinlerden sonra bulma şovu yap?


19

Find komutunun dizinlerden sonra eğik çizgi göstermesini nasıl sağlayabilirim? Örneğin, yerine dirgöstermek istiyorum . kullanıyorumdir/dirfind . -print

Yanıtlar:


10

portably:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

Dizinleri ve dosyaları ayrı ayrı listelemek istiyorsanız (çıktıyı sıralayarak birleştirebilirsiniz):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

GNU bulması ile Shawn J. Goff'un cevabına bakınız .

Bir terminale çıkış yapmasanız bile yazdırılamayan karakterlerin karıştırılmasını riske atmak istiyorsanız, ddeimeke'nin cevabına bakın .

Zsh: içinde print -rl -- **/*(DM)( Dnokta dosyalarını dahil Metmek , /sonradan dizin eklemek için )


İlk komut benim için sondaki eğik çizgileri yazdırmadı, ancak ikincisi yazdırıyor.
Steven

15
find . \( -type d -printf "%p/\n" , -type f -print \)

Bu, dizin adlarını biçimlendirmek için printf komutunu ve geri kalanı için standart baskıyı kullanır.


Bulma esnekliğine hayran kalmaya devam ediyorum.
Shawn J. Goff

1
-printfGNU bulmaya özgü olduğunu unutmayın .
Gilles 'SO- kötü olmayı bırak'

Güzel cevap. Ben gibi nasıl findbireyin pozisyonel argümanlar böyle gelişmiş çıktı işlemlerine izin verir. Bununla birlikte, virgül etrafındaki boşluklar olmadan işe yaramayacağını unutmayın.
jimp

1
Bu cevaba ve Gilles'e dayanarak, aşağıdaki basitleştirilmiş versiyonu buldum:find . -type d -printf '%p/\n' -or -print
Teresa e Junior

8

Olabilir

find . -print0 | xargs -0 ls -Fd

bir seçenektir.

Solaris kılavuz sayfasından:

-F Dizinleri sondaki eğik çizgi (/) ile işaretler, arkadan büyük işareti (>) olan kapılar, sondaki yıldız işaretli yürütülebilir dosyalar (*), sondaki dikey çubuklu FIFO'lar (|), sondaki sembolik bağlantılar " "sign (@) ve AF_UNIX adres ailesi soketlerini izleyen eşittir işaretine (=) sahip. İşlenen olarak adlandırılan simgeleri takip eder.


@Gilles: "d" ;-) için teşekkürler
ddeimeke

bu sistem çağrılarının miktarını artırır
Paweł Polewicz
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.