یک اسکریپت Bash بنویسید که یک مسیر دایرکتوری را بهعنوان آرگومان گرفته و بهصورت بازگشتی (Directory Traversal) همه فایلها و پوشهها را پیمایش کرده و برای هر فایل نام و اندازهاش (بر حسب بایت) را چاپ کند.
10.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:44 0.0
برای حل این مسئله میتوانید از دستور find یا یک تابع بازگشتی در Bash استفاده کنید؛ برای بهدستآوردن اندازه فایل از stat یا du با سوئیچ مناسب بهره ببرید. نکات کاربردی: آرگومانها را با نقلقول ("$1") محافظت کنید تا نامهایی با فاصله درست کار کنند، از تست -d و -f برای تشخیص پوشه و فایل استفاده کنید و هنگام استفاده از find از گزینه -print0 همراه با while IFS= read -r -d '' برای مدیریت نامهای دارای کاراکترهای خاص بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیمایش کامل یک مسیر دایرکتوری در Bash، استفاده از find -print0 همراه با خواندن با while IFS= read -r -d '' امنتر از نوشتن تابع بازگشتی خام است. برای محافظت از نامهای با فاصله یا کاراکترهای ویژه، آرگومان ورودی را با "$1" نقلقول کنید و نام فایلها را بدون تغییر پردازش کنید. برای نمایش نام فایل و اندازه به بایت، از stat -c '%n %s' استفاده کنید تا دقیقاً اندازه را بدست آورید و از du برای محاسبهٔ کل اندازه پوشه پرهیز کنید. همیشه به وجود لینکهای نمادین و مجوزهای دسترسی توجه کنید و در صورت نیاز از گزینههای find مانند -L یا -P برای کنترل دنبال کردن لینکها استفاده کنید.
گزارش