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