~2 min read • Updated Jul 16, 2025

سیستم‌های لینوکس شامل هزاران فایل هستند. برای مدیریت آن‌ها، دانستن ابزارهای جست‌وجو بسیار مهم است. در این مقاله ابزارهای locate، find، xargs، touch و stat را بررسی می‌کنیم تا بتوانیم فایل‌ها را سریع‌تر پیدا کرده و مدیریت کنیم.


locate: جست‌وجو بر اساس نام فایل


دستور locate بر اساس پایگاه داده‌ای سریع مسیرهایی که شامل رشته مشخصی هستند را پیدا می‌کند:


locate bin/zip

برای پالایش نتایج می‌توان از grep نیز استفاده کرد:


locate zip | grep bin

نکته: پایگاه داده توسط updatedb ساخته می‌شود و ممکن است فایل‌های تازه را دربر نگیرد. برای به‌روزرسانی دستی:


sudo updatedb

find: جست‌وجوی دقیق فایل‌ها


دستور find براساس ویژگی‌هایی مانند نوع، اندازه یا نام فایل‌ها را در مسیر مشخصی جست‌وجو می‌کند:


find ~ | wc -l

نمونه تست‌ها


find ~ -type d | wc -l
find ~ -type f | wc -l

انواع فایل‌ها


نوعتوضیح
bدستگاه بلاکی
cدستگاه کاراکتری
dپوشه
fفایل معمولی
lلینک نمادین

جست‌وجوی فایل‌های بزرگ


find ~ -type f -name "*.JPG" -size +1M | wc -l

واحدهای اندازه


واحدتوضیح
bبلاک‌های ۵۱۲ بایتی
cبایت
wکلمات ۲ بایتی
kکیلوبایت
Mمگابایت
Gگیگابایت

تست‌های رایج در find


تستتوضیح
-cminفایل‌هایی که n دقیقه قبل تغییر کرده‌اند
-cnewerجدیدتر از فایل مرجع
-emptyفایل یا پوشه‌های خالی
-nameالگوی خاص نام
-inameالگوی نام بدون حساسیت به حروف بزرگ
-userفایل‌های متعلق به کاربر مشخص

عملگرها و ترکیب تست‌ها


برای ساخت جست‌وجوهای پیچیده‌تر از عملگرهای منطقی استفاده می‌شود:


find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)

جدول عملگرهای منطقی


عملگرکارکرد
-and / -aدر صورت صحیح بودن هر دو شرط
-or / -oدر صورت صحیح بودن یکی از شروط
-not / !برعکس شرط
()گروه‌بندی شروط (با اسلش فرار)

اقدامات از پیش‌تعریف‌شده


عملتوضیح
-deleteحذف فایل‌ها
-lsنمایش با فرمت ls -dils
-printنمایش مسیر کامل
-quitخروج پس از اولین نتیجه

مثال حذف فایل‌های .bak


find ~ -type f -name '*.bak' -delete

قبل از حذف، پیشنهاد می‌شود از -print استفاده شود.


اجرای فرمان دلخواه با -exec


find ~ -type f -name 'foo*' -exec ls -l '{}' ';'

-ok برای اجرای تأییدشده


find ~ -type f -name 'foo*' -ok ls -l '{}' ';'

بهبود عملکرد با + یا xargs


find ~ -type f -name 'foo*' -exec ls -l '{}' +

find ~ -type f -name 'foo*' -print | xargs ls -l

فایل‌هایی با فاصله در نام


find ~ -iname '*.jpg' -print0 | xargs --null ls -l

مثال عملی: ساخت پوشه تست


mkdir -p playground/dir-{001..100}
touch playground/dir-{001..100}/file-{A..Z}

یافتن فایل-A:


find playground -type f -name 'file-A' | wc -l

ساخت فایل مرجع و بررسی:

Written & researched by Dr. Shahin Siami