Anladığım kadarıyla, aşağıdakiler tamamen aynı anlama gelmelidir:
ls -1 | xargs file {}
ls -1 | xargs -I{} file {}
-I seçeneği belirtilmezse, varsayılan olarak -I {} olarak ayarlanır.
Geçerli dizindeki tüm dosyaları listelemek ve fileher birinde komut çalıştırmak istiyorum . Bazılarının isimlerinde boşluklar var. Ancak farkı fark ettim. Aşağıya bakınız:
$ ls -1
Hello World
$ ls -1 | xargs file {}
{}: ERROR: cannot open `{}' (No such file or directory)
Hello: ERROR: cannot open `Hello' (No such file or directory)
World: ERROR: cannot open `World' (No such file or directory)
$ ls -1 | xargs -I{} file {}
Hello World: directory
-I {} açıkça belirtildiğinde, dosya adlarındaki boşluklar beklendiği gibi işlenir.
xargs fileveya xargs -I{} file {}. Olmamalı xargs file {}. Açıkça -I {} belirtirken, bash bunu ele alacaktır file "Hello World". -I {} olmadan file Hello World,.
-1Seçeneği bilmeniz iyi ls, ancak çıktısı lsbir dosya veya bir boru olduğunda varsayılan olarak açıktır, bu yüzden burada buna ihtiyacınız yoktur. (3) Kullanımdan -Ikaldırılmış -i(küçük harf I) seçenekle karıştırıyorsunuz. -ifooeşittir -Ifoo, ancak düz -ieşittir -I{}. Ama kullanın -I{}. (4) Gerçekten söylemek istediğiniz şeyi yapmak istiyorsanız, neden sadece söylemiyorsunuz file *?
fileüzerinde çalıştırmak için xargs -I {} dosya {} ` . Ama kullanarak daha basit bir örnek buldum ls. Haklısın. Bunun için file *en iyisi.
-exec.