Konunun daha iyi anlaşılması için örneklemeler yapacağım. İlk senaryomuz da kullanıcı dizinimizde yer alan tüm yedekleme ("*~") dosyalarını silelim.
find /home/huso -name *~ |xargs rm
Verdiğimiz örnek aslında oldukça iyi çalışıyor fakat bazı hedeflenen yedekleme dosyaları gerçekten silinmez bunlar;
Buna ek olarak, Xargs komutu zayıf sıfır argüman işler. Hiçbir eşleme find komutu ile bulunamazsa, Xargs hemen sona erdirmek için akıllı değildir, ama yine de bir şekilde hedef komutunu (rm) yürütmek için çalışacağız.
find /home/huso -name bla_bla_bla* |xargs rm rm: missing operand
find komutu varsayılan olarak sembolik linkleri takip etmez, sembolik bağlantıları takip edebilmeniz için -L parametresini kullanmanız gerekir.
find -L /home/huso -name *~ |xargs rm
find /home/huso -name dd* | xargs rm rm: cannot remove ‘/home/huso/Downloads/dd’: No such file or directory rm: cannot remove ‘deneme.pdf’: No such file or directory
Xargs boşluklar (ve yenisatırlar) da girdi argümanlarını böler. Bir dosya adı (veya path adı) içinde boşluklar varsa, Xargs bunu yanlış yorumlar ve birden fazla dosya var olduğunu düşünür olacaktır Örn: "dd deneme.pdf".
find /home/huso -name dd* -print0 | xargs -0 rm
xargs -r parametresi ile kullanın. Eğer stdin boşsa, Xargs komutu çalışmaz ve çıkış sağlamaz.
find -L /home/huso/Downloads -name dd* -print0 |xargs -0 -r rm
Yorumlar