یک اسکریپت Bash بنویسید که از یک دایرکتوری ورودی شروع کند، تمام زیردایرکتوریها را بهصورت بازگشتی پیمایش کرده و فهرستی از مسیر کامل کلیه فایلها را در یک فایل خروجی ذخیره کند.
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:39 0.0
برای حل این مسئله از ابزارهای خط فرمان مانند find یا حلقههای Bash استفاده کنید. ورودی را با بررسی وجود و دسترسپذیری دایرکتوری کنترل کنید، سپس با find /path -type f -print0 و یک حلقه while IFS= read -r -d $'\0' file مسیرها را بخوانید و با realpath یا printf "%s\n" "$file" مسیر کامل را به فایل خروجی هدایت کنید؛ متغیرها را با کوتیشن محافظت کنید تا با نامهای شامل فاصله یا کاراکترهای خاص درست کار کند. نکتهها: از گزینه -print0 و read -d برای امن خواندن نام فایلها استفاده کنید، خطاها را به stderr هدایت کنید و در صورت نیاز سطح دسترسی را بررسی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این رویکرد امن است چون با استفاده از -print0 و read -d $'\0' نام فایلها را با فاصلۀ خالی یا کاراکترهای خاص درست میخواند و خروجی کامل را حفظ میکند. برای ایمنی، اول ورودی را بررسی کنید که دایرکتوری وجود دارد و خواندن از آن مجاز است و خطاها را به STDERR هدایت کنید. اگر میخواهید مسیرهای کامل را مطمئن بهدست آورید، میتوانید از realpath یا printf '%s\n' "$file" استفاده کنید و در صورت نیاز بتوانید -m یا -L را برای دنبالینگ لینکها اضافه کنید. برای سادهتر کردن ساختار کد، میتوانید از mapfile/readarray با -d '' بهره ببرید، اما باید نسخهٔ Bash شما از این ویژگی پشتیبانی کند.
گزارش