یک اسکریپت بش بنویسید که یک مسیر دایرکتوری را به‌عنوان ورودی بگیرد و به‌صورت بازگشتی همهٔ فایل‌های با پسوند .txt را لیست کند.

13.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:31

0.0

می‌توانید از دستور find (مثلاً find "$1" -type f -name '*.txt' -print) یا قابلیت globstar در bash (shopt -s globstar و سپس for f in "$dir"/**/*.txt) استفاده کنید؛ در اسکریپت ورودی‌ها را بررسی کنید (وجود مسیر و دسترسی)، متغیرها را داخل کوتیشن قرار دهید تا نام‌های شامل فاصله درست کار کنند و برای موارد با نام‌های خاص از -print0 و read -d '' استفاده کنید. این راهکارها ساده و مناسب سطح مبتدی هستند.

توسط پژوهشگر در 201 روز قبل ساعت 03:31
دسته بندی ها: Bash Scripting Bash Scripting for beginner
arash در 201 روز قبل ساعت 06:09

برای اطمینان از کارکرد درست با نام‌های دارای فاصله یا کاراکترهای ویژه، ورودی‌های اسکریپت و مسیر دایرکتوری را داخل کوتیشن بگذارید و صحیح بودن دسترسی را بررسی کنید. استفاده از find با -print0 و خواندن خروجی با read -d '' یا استفاده از یک حلقهٔ while می‌تواند از از هم گسستن نام فایل‌ها جلوگیری کند. اگر می‌خواهید رویکردی ساده‌تر را ترجیح بدهید، می‌توانید با فعال‌سازی globstar (shopt -s globstar) در bash، به‌طور بازگشتی برای فایل‌های *.txt پیمایش انجام دهید. در نهایت قبل از اجرای جستجو وجود مسیر ورودی و دسترسی به آن را چک کنید تا خطاهای دیگر کاهش یابد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری