
هر دو دستور برای انتقال خروجی یک command به command دیگه استفاده میشه، اما یک فرق مهم دارن:
| خروجی را به stdin دستور بعدی میفرسته:
echo "hello" | wc -w
اما xargs خروجی را به argument تبدیل میکنه:
echo "file1.txt file2.txt" | xargs rm
در واقع دستور دوم تقریباً به این تبدیل میشه:
rm file1.txt file2.txt
پس بهطور خلاصه:
Pipe → stdin
xargs → arguments
چند دستوری که آرگومان میگیرن:
rm,mkdir,cp
چند سوییچ xargs
-n: تعداد آرگومان ها در هر اجرا
-I: جایگذاری هر آرگومان، در command بعد از xargs
-0: جلوگیری از بوجود آمدن مشکل در نام فایل هایی که فاصله یا کاراکتر خاص دارن:
find ... -print0 | xargs -0 ...