غالباً یک فرمان تعدادی فایل را به عنوان شناسه میپذیرد، به عنوان مثال:
zcat -- *.gz
در برخی سیستمها، به جای zcat باید از gzcat استفاده کنید. اگر هیچ یک در دسترس نیستند، یا اگر علاقمند به انجام بازیهای حدسی نمیباشید، فقط از gzip -dc به جای آن استفاده کنید.
کاربرد -- از ایجاد نتایج غیر منتظره ناشی از نام فایلهایی که با علامت خط تیره آغاز میشوند، ممانعت میکند.
اگر یک حلقه آشکار میخواهید یا اگر فرمان شما نمیتواند شناسههای چندتایی را در یک فراخوانی قبول کند، حلقه for میتواند به کار برود:
# Bourne for file in ./*.gz do echo "$file" # "$file" انجام کاری با done
برای انجام آن به طور بازگشتی، از find استفاده کنید:
# Bourne find . -name '*.gz' -type f -exec do-something {} \;
اگر به دلایلی لازم است فایلها داخل پوسته پردازش بشوند، پس نتایج find را در حلقهای بخوانید:
# Bash while IFS= read -r file; do echo "Now processing $file" # "$file" انجام کار مورد علاقه با done < <(find . -name '*.gz' -print)
این مثال از جایگزینی پردازش استفاده میکند(همچنین پرسش و پاسخ 24 را ببینید) هرچند لوله نیز در بسیاری از وضعیتها میتواند مناسب باشد. به هرحال، نام فایلهایی که شامل سطرجدید میباشند را به طور صحیح مدیریت نمیکند. برای مدیریت نامفایلهای دلبخواهی، پرسش و پاسخ 20 را ببینید.
پرسش و پاسخ 15 (آخرین ویرایش 2010-07-30 14:32:06 توسط GreyCat)