خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
نحوه شمارش فایل ها در یک دایرکتوری در لینوکس
اگرچه نه همیشه ولی بعضا شما نیاز دارید که بدانید چند فایل در یک دایرکتوری مشخص وجود دارد. در این مقاله چندین روش مختلف برای یافتن تعداد فایل های یک دایرکتوری در لینوکس به شما نشان می دهیم.
سادهترین راه برای شمارش فایلها در دایرکتوری، لیست کردن یک فایل در هر خط با دستور ls و pipe کردن خروجی به wc برای شمارش خطوط است:
دستور بالا مجموع تمام فایل ها از جمله دایرکتوری ها و symlink ها را به شما می دهد. گزینه 1- به معنای لیست کردن یک فایل در هر خط است و وجود U- در دستور ls، باعث می شود که خروجی sort و مرتب سازی نشود که سرعت اجرای دستور را بالا می برد.
دستور ls -1U فایل های مخفی را به حساب نمی آرود.
در دستور فوق به جای DIR_NAME باید مسیر دایرکتوری مورد نظرتان را مشخص کنید. اگر آن را مشخص نکنید، همین دایرکتوری جاری را شامل می شود.
اگر قصد شما فقط شمارش فایلها بوده و اصلا کاری به دایرکتوری ها ندارید، باید از دستور زیر استفاده کنید:
وجود p- در دستور، در واقع ls را مجبور می کند که نشانگر / را به دایرکتوری ها اضافه کند. خروجی به دستور grep -v ری دایرکت شده که دایرکتوری ها را حذف می کند. برای کنترل بیشتر بر روی فایلهای لیست شده، از دستور find به جای ls استفاده کنید:
وجود گزینه type f- در واقع find را مجبور می کند که فایل ها(حتی فایل های مخفی) را لیست کند و maxdepth 1- جستجو را به دایرکتوری سطح اول محدود میکند(یعنی در ساب دایرکتوری ها به دنبال فایل ها نگردد).
برای شمارش بازگشتی فایل ها در دایرکتوری دستور find را به صورت زیر اجرا کنید:
دستور دیگری که می تواند برای شمارش فایل ها استفاده شود tree است که محتویات دایرکتوری ها را در فرمت درختی لیست می کند:
آخرین خط در خروجی دستور فوق، تعداد کل فایل ها و دایرکتوری های لیست شده را نشان می دهد که صد البته با توجه به دایرکتوری مورد نظر شما، این تعداد فایل ها می تواند متفاوت باشد:
سادهترین راه برای شمارش فایلها در دایرکتوری، لیست کردن یک فایل در هر خط با دستور ls و pipe کردن خروجی به wc برای شمارش خطوط است:
ls -1U DIR_NAME | wc -l
دستور بالا مجموع تمام فایل ها از جمله دایرکتوری ها و symlink ها را به شما می دهد. گزینه 1- به معنای لیست کردن یک فایل در هر خط است و وجود U- در دستور ls، باعث می شود که خروجی sort و مرتب سازی نشود که سرعت اجرای دستور را بالا می برد.
دستور ls -1U فایل های مخفی را به حساب نمی آرود.
در دستور فوق به جای DIR_NAME باید مسیر دایرکتوری مورد نظرتان را مشخص کنید. اگر آن را مشخص نکنید، همین دایرکتوری جاری را شامل می شود.
اگر قصد شما فقط شمارش فایلها بوده و اصلا کاری به دایرکتوری ها ندارید، باید از دستور زیر استفاده کنید:
ls -1Up DIR_NAME | grep -v / | wc -l
وجود p- در دستور، در واقع ls را مجبور می کند که نشانگر / را به دایرکتوری ها اضافه کند. خروجی به دستور grep -v ری دایرکت شده که دایرکتوری ها را حذف می کند. برای کنترل بیشتر بر روی فایلهای لیست شده، از دستور find به جای ls استفاده کنید:
find DIR_NAME -maxdepth 1 -type f | wc -l
وجود گزینه type f- در واقع find را مجبور می کند که فایل ها(حتی فایل های مخفی) را لیست کند و maxdepth 1- جستجو را به دایرکتوری سطح اول محدود میکند(یعنی در ساب دایرکتوری ها به دنبال فایل ها نگردد).
برای شمارش بازگشتی فایل ها در دایرکتوری دستور find را به صورت زیر اجرا کنید:
find DIR_NAME -type f | wc -l
دستور دیگری که می تواند برای شمارش فایل ها استفاده شود tree است که محتویات دایرکتوری ها را در فرمت درختی لیست می کند:
tree DIR_NAME
آخرین خط در خروجی دستور فوق، تعداد کل فایل ها و دایرکتوری های لیست شده را نشان می دهد که صد البته با توجه به دایرکتوری مورد نظر شما، این تعداد فایل ها می تواند متفاوت باشد:
15144 directories, 91311 files
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: