İsimlere göre dosya bulma


11

Dizin ağacında yinelenen olarak belirli bir normal ifadeye uyan adlara sahip tüm dosyaları tek bir yönetilen arabelleğe nasıl getirebilirim?

Yani hepsini bir kerede yeniden adlandırabilir / silebilir miyim?


2
Zaten `` find-name-dired '' i düşündünüz mü? (Normal ifade kullanır, normal ifadeler kullanmaz.)
Marco Wahl

2
Bunu bir cevap olarak göndermelisiniz @MarcoWahl. Dired'in bunu yapabileceğine dair hiçbir fikrim yoktu!
Tyler

1
Kitaplık find-dired+.elsize gelişmiş bir komut sürümü verir find-name-dired. Arama dışında bırakılacak (1) dk. Ve maks. Arama derinliklerini ve (2) yolları belirten isteğe bağlı değişkenleri kabul eder.
Drew

Yanıtlar:


11

joker

kullanım

M-x find-name-dired

joker karakterlere göre dosya almak için.

Misal

"~ / Org /" dizininde "org" sonekine sahip tüm dosyaları bulun. Aşağıdakileri girin

M-x find-name-dired
~/org
*org

ve keyfini çıkarın.

Düzenli ifade

kullanım

M-x find-dired

düzenli ifadeye göre dosyaları almak için uygun argümanlarla.

Misal

"~ / Org /" dizininde "org" sonekine sahip tüm dosyaları bulun. Aşağıdakileri girin

M-x find-dired
~/org
-regex ".*org$"

ve keyfini çıkarın.


*orgManuel olarak girmeden otomatik olarak kontrol edilen bu işlemi otomatikleştirmek mümkün mü
alper

Seni doğru anlarsam birçok olasılık var. Örneğin (defun my-find-orgfiles () (interaktif) (find-name-dired "~ / myorgs /" "* org")) ile özel bir arama yapın ve onu init dosyanıza koyun. Sonra Mx benim bul-orgfiles RET kullanın. Hatta komutu bir anahtara bile bağlayabilirsiniz.
Marco Wahl

Can my-find-orgfiles ()"t" ve "Q" // seçer bütün ve geçerli olduğunu, ardından? @Marco Wahl
alper

2

Düzenli ifade

Normal ifade kullanmak için deneyebilirsiniz find-lisp-find-dired. Bu komut standart lib'e aittir. tamamen elisp ile yazılan find-lisp , yani harici bir findprogram kurmanıza gerek yoktur .

Örneğin, ~ / lisp dizini altındaki '.el' uzantılı tüm dosyaları gösterir:

M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET

(Maç onurlandırır case-fold-search).

joker

Bir sonraki Emacs sürümünden (v26.1) Dired'in dosya adı bağımsız değişkeninin dizin kısmındaki wilcardları desteklediğini belirtmek gerekir. Bu şu anlama gelir:

C-x d ~/soft/*/*.c RET

(Maç büyük / küçük harfe duyarlıdır).

Bu komut, Dired buffer'da '.c' uzantılı tüm dosyaları, '~ / soft' altında 2 derinlik seviyesi gösterir . Bu, '~ / soft / foo / bar.c' gibi tüm dosyaların listeleneceği, ancak '~ / soft / qux.c' veya '~ / soft / foo / baz / qux.c' gibi dosyaların listelenmeyeceği anlamına gelir .

Aynı ama büyük / küçük harfe duyarlı değil:

C-x d ~/soft/*/*.[cC] RET

Bonus

Dired'i elisp, 'ls-lisp' veya 'eshell-ls' ile uygulanan bir 'ls' ile çalıştırıyorsanız, joker karakterle eşleşen tüm dosyaları aşağıdaki sözdizimiyle özyineli olarak listeleyebilirsiniz:

C-x d ~/soft/**/*.c RET

'**' not edin. Bu durumda , '~ / soft / qux.c' bile olsa, '~ / soft' altındaki joker karakterle eşleşen tüm dosyalar gösterilir .

Ancak, insert-directory-program joker karakterini kullandığınızda sistem kabuğu tarafından yapılır; başka bir deyişle, bu özyinelemeli '**' sözdizimi yalnızca kabuğunuz tarafından destekleniyorsa çalışır. Örneğin zsh bunu destekliyor, ama bash desteklemiyor. Zsh olan diğer mermilerle önceki komut aynı şekilde yapılır:

C-x d ~/soft/*/*.c RET
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.