منبع اصلی نوشتار زیر در این لینک قرار دارد

بررسی دایرکتوری ها و کدام دایرکتوری ها خالی هستند

در تمامی سیستم عامل های یونیکسی مانند لینوکس، سولاریس، بی اِس دی ها، مکینتاش و غیره، همه چیز فایل است. مشخصه و ویژگی های فایل ها در قالب ساختاری به نام inode ذخیره می شوند. دایرکتوری در سیستم عامل های یونیکسی نیز یک فایل است. دایرکتوری خود شامل دیگر دایرکتوری ها یا فایل های درون خودش است و ساختار آن شامل نام فایل و inode مربوط به فایل های درون آن می شود. در ادامه این پست چگونگی پیدا کردن کدام دایرکتوری خالی (empty) است گفته می شود.

راه های بسیاری در سیستم عامل های یونیکسی وجود دارد تا بدانیم که آیا یک دایرکتوری خالی است یا نه. یکی از روش ها استفاده از دستور find است. با استفاده از دستور زیر فایل های درون یک دایرکتوری را لیست می کند و اگر در خروجی چیزی چاپ نشد، یعنی اینکه دایرکتوری خالی است. (در مثال زیر نخستین دستور برای دایرکتوری جاری چون با یک نقطه مشخص شده است).

;/ {} :find . -type f -exec echo Found File

;/ {} :find /tmp -type f -exec echo Found File

اما اگر دستور زیر را اجرا کنید، خواهید دید که این دایرکتوری با اینکه خالی است، اما حجم آن 4 کلیوبایت است. دلیل آن چیست؟دلیل آن اینکه هر بلاک در لینوکس 4 کیلوبایت حجم دارد و به محض ایجاد یک دایرکتوری، آن دایرکتوری یک بلاک یا 4 کیلوبایت را اشغال می کند.

یا اینکه از دستور ls استفاده کنیم. سوئیچ A- دو نشان . و .. را در خروجی چاپ نمی کند و دستور ls -A که در میان دو براکت قرار گرفته Test می کند که آیا دایرکتوری محتوا دارد و یا نه. اگر محتوا داشت پیام Not empty و در غیر اینصورت Empty چاپ خواهد شد.

اجرا و خروجی دو نمونه در شکل بالا



برچسب ها : , , , , , , , , ,