یک اسکریپت 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 هدایت کنید و در صورت نیاز سطح دسترسی را بررسی کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:39
دسته بندی ها: Bash Scripting Bash Scripting for beginner
nima در 221 روز قبل ساعت 12:27

این رویکرد امن است چون با استفاده از -print0 و read -d $'\0' نام فایل‌ها را با فاصلۀ خالی یا کاراکترهای خاص درست می‌خواند و خروجی کامل را حفظ می‌کند. برای ایمنی، اول ورودی را بررسی کنید که دایرکتوری وجود دارد و خواندن از آن مجاز است و خطاها را به STDERR هدایت کنید. اگر می‌خواهید مسیرهای کامل را مطمئن به‌دست آورید، می‌توانید از realpath یا printf '%s\n' "$file" استفاده کنید و در صورت نیاز بتوانید -m یا -L را برای دنبالینگ لینک‌ها اضافه کنید. برای ساده‌تر کردن ساختار کد، می‌توانید از mapfile/readarray با -d '' بهره ببرید، اما باید نسخهٔ Bash شما از این ویژگی پشتیبانی کند.

گزارش

1 پاسخ

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

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