Bulmak için aramaları zincirlemek isteyebilirsiniz (bir kez, öğrendiğinizde, bunun mümkün olabileceğini, bunun bugün olabilir). Bu, elbette, ancak siz kaldığınız sürece mümkündür. Xargs'a bir kez boru bağladığınızda kapsam dışında.
Küçük örnek, iki dosya a.lst ve b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Burada numara yok - sadece her ikisinin de "fuddel" içerdiği, ancak sadece birinin "fiddel" içerdiği gerçeği.
Bunu bilmediğimizi varsayalım. 2 koşulla eşleşen bir dosya arıyoruz:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Belki grep ya da başka bir programın sözdizimini koşul olarak her iki dizeyi de geçirirsiniz, ama mesele bu değil. Argüman olarak bir dosya verildiğinde doğru veya yanlış dönebilen her program burada kullanılabilir - grep sadece popüler bir örnekti.
Ve not, sen takip edebilir -exec bulmak gibi diğer bulmak komutlarla -LS veya -sil veya benzer bir şey. Unutmayın ki silme yalnızca rm (dosyaları kaldırmaz) değil, rmdir (dizinleri de kaldırır).
Bu tür bir zincir, aksi belirtilmediği sürece (yani bir -or
anahtarla (ve parens (maskeleme))) AND komutlarının bir kombinasyonu olarak okunur .
Yani kullanışlı bir şey olan bulma zincirinden ayrılmıyorsunuz. -Xargs kullanmanın hiçbir avantajı görmüyorum, çünkü dosyaları aktarırken dikkatli olmanız gerekiyor, ki bu yapmanız gereken bir şey değil - her dosyayı sizin için tek bir argüman olarak geçirmeyi otomatik olarak ele alıyor.
{} Kaşlı ayraçlar için biraz maskeleme gerektiğine inanıyorsanız , delil isteyen soruyu ziyaret etmekten çekinmeyin. Benim iddiam şudur: Yapmazsın.
find
. Çok teşekkürler!