Bu find
doğrudan aşağıdakiler kullanılarak yapılabilir -exec
:
find . -name "*.xml" -type f -exec xmllint --output '{}' --format '{}' \;
Ne geçirilen için -exec
şablon parametreleri ile bulunan dosya başına bir kere çağrılır {}
geçerli dosya adı ile değiştirilmektedir. \;
Find komutunun ucunda Şimdi çizgiyi sonlandırır.
Hem giriş hem de çıkış dosya adlarının aynı çağrıda belirtilmesi gerektiğinden, dosya kullanımı xargs
gerçekten gerekli değildir çünkü xmllint
dosya başına bir kez çağırmamız gerekir.
xargs
bulmadan aktarılacak komut aynı anda birden çok dosya üzerinde çalışıyorsa ve bu liste uzunsa gerekli olurdu. Bu durumda bunu yapamazsınız, çünkü tek dosya adını --output
seçeneğine geçirmeniz gerekir xmllint
. Olmadan xargs
"çok uzun Argüman Listesi" a ile bitebileceğini hata dosyaların bir çok işlem eğer. xargs
ayrıca -I
seçeneği ile dosya değiştirme dizelerini destekler :
find . -name "*.xml" -type f | xargs -I'{}' xmllint --output '{}' --format '{}'
find -exec
Yukarıdaki komutla aynı şeyi yapar . Klasörlerinizi herhangi bir boşluk gibi garip karakter varsa kullanmak gerekecektir -0
seçenekleri find
ve xargs
. Ama kullanarak xargs
ile -I
seçeneği ima -L 1
siz de doğrudan kullanabilir, böylece araç sadece zaten bir seferde 1 dosyayı işlemek find
ile -exec
.