Bir dizini bulmak için bulun

20

komutunu kullandığım dosyaları bulmak için her zaman bulun , bul çok hızlı ve bunu seviyorum. Yakın zamanda oluşturulan dosyalar için find , normalde yeni oluşturulmuş dosyalar ile temel olarak oluşturulduklarını biliyorum, böylece tüm dosya sistemimi aramak zorunda kalmam.

Bir dizinin yerini unuttuğumda, ne bulmak ne de bulmak ideal görünmüyor.

Bul, her zaman çok fazla bilgi tükürür çünkü bir dizindeki her dosya da bulmak için bir eştir. Örneğin, dosya sistemimde bir yerdeki bir dizin için arama yapıyor olsaydım günlüğü bul tonlarca sonuç döndürürdü. Bulmakla aynı şeyi yaparsam, find / -name log -type d komutunu çalıştırır ve okunamayan bir klasörle her karşılaştıklarında her türlü izin hatasını dağıtır.

Daha iyi bir yolu var mı?

Yanıt: Başka bir şey bulana kadar grep'le yapışıyorum:

locatedir () {
    for last; do true; done
    if [[ $last == *\/* ]]
    then
        locate [email protected] | grep "${last}$"
    else
        locate [email protected] | grep "/${last}$"
    fi
}
    
sordu Michael 27.11.2010 22:49

4 cevap

12

Bir yol (daha iyi bir yol olabileceğinden şüpheleniyorum) grep'i sadece klasör adınızla bitecek yolları döndürmek için kullanmaktır:

locate foldername | grep /foldername$
    
verilen cevap misterben 27.11.2010 23:08
28

% ko_de% 'si ( --regex ) seçeneğini kullanabilirsiniz. co_de% :

locate -r '/log$'
    
verilen cevap Florian Diesch 28.11.2010 00:31
5

Denedin mi:

locate /home/insertusernamehere/*/filename ?

veya

locate file | grep -i '^/home/.*/examplesubdirectory' ?

veya bunun herhangi bir varyasyonu

    
verilen cevap RolandiXor 27.11.2010 23:02
2

İşte bu

locatedir () {
    locate "$*" | while read line
    do 
    if [ -d "$line" ] ; then echo $line ; fi
    done
}

locatedir $*
    
verilen cevap Linuxuser 12.06.2015 13:27

Etiketlerdeki diğer soruları oku