Mac'i Terminal Üzerinden Aramak?


22

Mac'inizi terminal kullanarak aramak için herhangi bir komut var mı? Bizi aramaya koştum ama biraz tepkisiz görünüyor ve hiçbir şey çıkmadı.

Örneğin, "grep Files" (Bir klasör adı) yazardım ve sadece boş bir satır yazdırır ve hiçbir şey olmuyor.



Her tür dosyayı aramakla ilgileniyorum; Metin dosyalarını dışlamak şart değil, sadece metin dosyalarını değil.
JFW

Yanıtlar:


21

mdfindSpotlight ile bir arama yapmak için de komutu kullanabilirsiniz . Daha fazla bilgi burada .

mdfind -name searchtermAdı olan dosyaları almak için kullanın searchterm. mdfind searchtermDosya adı ve içeriği üzerinde bir arama yapmak için kullanın .


25

Yalnızca belirli bir ada sahip dosyaları bulmak istiyorsanız, find

Man sayfası BURADA veya man findterminal isteminde yazarak bulunabilir .

Temel olarak, bul belirlediğiniz bir dosya toplantısı ölçütünü tekrar tekrar arayacaktır. En kolay örnek:

find . -name file_name -print

Bu, geçerli dizinde başlayan ve aşağıda arama yaparak "dosya_adı" adlı bir dosyayı arayacak ve bu adı taşıyan dosyaları yazacaktır.

find ~ -name ".DS_Store" -delete

Bu tüm .DS_Store dosyalarını bulur ve siler.

Adı, regex, tarihe göre arama yapabilirsiniz. Dosya üzerinde herhangi bir Unix yolu ile belirtme ile hareket edebilirsiniz -exec.

Find'ı daha karmaşık bir eylemler dizisinin başlangıcı olarak da kullanabilirsiniz. Örnek:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

.M4a veya .mp3 uzantılı tüm dosyaları bulur

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Size bu dosyaların sayısını verir.


Tek -printbelirtme ise, ihmal edilebilir; Ayrıca, basit globbing kullanılabilir. Böylece .txtbir dizinin altındaki tüm dosyaları bulma fooişlemifind foo -name \\*.txt
Norman Gray

@yoshi: Bu kesinlikle yanlıştır. Yazma find .Cwd'den özyinelemelidir. find .Kök dizininize yazmaya çalışın !
12'de

Kötü olanım özyinelemeci olmadığına yemin edebilirdi ama belki sunucu boğdu -shrug-
nuala

5

Eğer bütün bir klasörü aramak istiyorsanız grep üzerinde -r komutunu kullanın:

grep -r pattern folder/to/search

Bul ile xargs kullanabilirsiniz:

find folder/to/search -name '*.txt' | xargs grep pattern

veya aynı anda iki dosyayı aradığınızdan ve bu nedenle belirtilen dosya adlarına sahip olduğunuzdan emin olmak için:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern

2

grepHem bir model hem de bir dosya açıklaması bekler. Eğer biri eksikse, kalıp olarak geçenleri kullanır ve verinin standart girdi ile aranmasını bekler.

Daha karmaşık bir filepec kullanmak istiyorsanız, o zaman kullanın find.

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print

Sadece basitçe komuta girdiğim isimdeki dosyaları bulmasını istiyorum.
JFW

Bu durumda, içinde -execyüklemini kullanmanıza gerek yoktur find.
Ignacio Vazquez-Abrams
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.