Proc ve sys klasörlerini find komutuyla aramadan nasıl dışlayabilirim?


10

Rastgele bir dizin yolu seçer bir komut dosyası yürütmek istedim:

find / -type d | shuf -n1 

Ne yazık ki belirli dizinlere girme yasağı hakkında hata mesajları alıyorum.

Bir dizini find ile aramadan nasıl hariç tutabilirim?

Yanıtlar:


13

Linux'ta belirli yolları hariç tutmak için:

find / -path /sys -prune -o -path /proc -prune -o -type d

Başka bir yaklaşım, findfarklı dosya sistemleri altında geri çekilmemeyi söylemektir .

find / -xdev -type d

Canlı sistem yerine dosya adlarının bir veritabanını sorgulamak için (genellikle her gün güncellenen, manuel olarak kullanarak da güncelleyebilirsiniz ) konum bulmayı da kullanabilirsiniz updatedb.

locate '*' | shuf -n 1

harika, kısa ve anlayışlı. find / -xdev -type d'nin kendisi çalışır, ancak find / -xdev -type d | shuf -n 1 hata mesajlarını görüntüler.
Abdul Al Hazred

1
@AbdulAlHazred hangi mesajları söylemediniz ama "izin verilmedi" hataları olduğunu tahmin ediyorum. Komutu root olarak çalıştırın ya da hataları stderr: 'a göndererek yoksayın find / -xdev -type d 2>/dev/null.
terdon

1
Sadece do Could find / \( -path /sys -o -path /proc \) -prune -o -type dsen gibi daha dizininin dışında tutmak istiyorsanız misiniz yararlı olabilir /devya da /tmpvb
BrainStone

6

GNU find ile regex seçeneklerini de kullanabilirsiniz, örneğin:

find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d

bu en güzel yaklaşım, (rant: yani bok / proc uygulaması olmayan diğer işletim sistemlerinde olduğu gibi gnu linux'da bulmayı / kullanılabilir kılan bir gnu seçeneği var ;-)
Florian Heigl
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.