Önceden Tanımlanmış Eylemler
Hadi biraz iş yapalım! Bizim sonuçlarımızdan bir listeye sahip olmak bulmak komut yararlıdır, ancak gerçekten yapmak istediğimiz listedeki öğelere göre hareket etmektir. Neyse ki, bulmak arama sonuçlarına göre eylemlerin gerçekleştirilmesine izin verir. Bir dizi önceden tanımlanmış eylem ve kullanıcı tanımlı eylemleri uygulamanın birkaç yolu vardır. Önce, önceden tanımlanmış birkaç eyleme bakalım:
Tablo 17-6: Önceden Tanımlanmış Bul Eylemleri
Eylem Açıklaması
Eylem Açıklaması
-delete Şu anda eşleşen dosyayı silin.
![]()
-ls Eşdeğerini gerçekleştirin ls-dils eşleşen dosyada.
Çıktı standart çıktıya gönderilir.
![]()
-print Eşleşen dosyanın tam yolunu standart çıktıya yazdırın. Başka bir eylem belirtilmemişse bu varsayılan eylemdir.
![]()
-quit Bir eşleşme yapıldıktan sonra çıkın.
![]()
Testlerde olduğu gibi, daha birçok eylem var. Bkz. bulmak tüm ayrıntılar için man sayfası. İlk örneğimizde şunu yaptık:
~ bul
~ bul
ana dizinimizde bulunan her dosya ve alt dizinin bir listesini üreten. Bir liste üretti çünkü -Yazdır başka bir eylem belirtilmemişse eylem ima edilir. Böylece komutumuz şu şekilde de ifade edilebilir:
bul ~ -yazdır
bul ~ -yazdır
Biz kullanabilirsiniz bulmak belirli kriterleri karşılayan dosyaları silmek için. Örneğin, dosyaları silmek için
“.BAK” dosya uzantısına sahipsek (genellikle yedekleme dosyalarını belirtmek için kullanılır), şu komutu kullanabiliriz:
~ -type f -name '*.BAK' -delete bul
~ -type f -name '*.BAK' -delete bul
Bu örnekte, kullanıcının ana dizinindeki (ve alt dizinlerindeki) her dosya, ile biten dosya adları için aranır. .bak. Bulunduklarında silinirler.
![]()
Uyarı: gerektiğini söylemeden gitmeli aşırı dikkatli olun kullanırken -sil eylem. Komutu her zaman önce yerine koyarak test edin.
- arama sonuçlarını onaylamak için -delete eylemi yazdırın.
![]()
Devam etmeden önce, mantıksal operatörlerin eylemleri nasıl etkilediğine bir kez daha bakalım. Aşağıdaki komutu göz önünde bulundurun:
bul ~ -type f -name '*.BAK' -print
bul ~ -type f -name '*.BAK' -print
Gördüğümüz gibi, bu komut adı .BAK (-name) ile biten her normal dosyayı (-type f) arayacaktır. '*.BAK') ve eşleşen her dosyanın ilgili yol adını standart çıktıya (-print) çıkaracaktır. Ancak komutun bu şekilde çalışmasının nedeni, her bir test ve eylem arasındaki mantıksal ilişkiler tarafından belirlenir. Unutmayın, varsayılan olarak, her test ve eylem arasında zımni bir ilişki vardır. Mantıksal ilişkileri daha kolay görebilmek için komutu şu şekilde de ifade edebiliriz:
~ -type f -ve -name '*.BAK' -ve -print'i bulun
~ -type f -ve -name '*.BAK' -ve -print'i bulun
Komutumuz tam olarak ifade edildiğinde, mantıksal operatörlerin yürütülmesini nasıl etkilediğine bakalım:
Test/Eylem Yalnızca...
Test/Eylem Yalnızca...
-Yazdır -type f ve -name '*.BAK' doğru
![]()
-adı '*.BAK' tipi f doğrudur
![]()
tipi f Bir alandaki ilk test/eylem olduğu için her zaman gerçekleştirilir.
-ve ilişki.
![]()
Testler ve eylemler arasındaki mantıksal ilişki, hangilerinin gerçekleştirileceğini belirlediğinden, testlerin ve eylemlerin sırasının önemli olduğunu görebiliriz. Örneğin, testleri ve eylemleri yeniden sıralayacak olursak, -Yazdır eylem ilkiydi, komut çok farklı davranırdı:
~ -print -ve -type f -ve -name '*.BAK'ı bul
~ -print -ve -type f -ve -name '*.BAK'ı bul
Komutun bu sürümü her dosyayı yazdıracaktır ( -Yazdır eylem her zaman doğru olarak değerlendirilir) ve ardından dosya türünü ve belirtilen dosya uzantısını test edin.
Dökümanlar