سیستمهای لینوکس شامل هزاران فایل هستند. برای مدیریت آنها، دانستن ابزارهای جستوجو بسیار مهم است. در این مقاله ابزارهای locate، find، xargs، touch و stat را بررسی میکنیم تا بتوانیم فایلها را سریعتر پیدا کرده و مدیریت کنیم.
دستور locate بر اساس پایگاه دادهای سریع مسیرهایی که شامل رشته مشخصی هستند را پیدا میکند:
locate bin/zipبرای پالایش نتایج میتوان از grep نیز استفاده کرد:
locate zip | grep binنکته: پایگاه داده توسط updatedb ساخته میشود و ممکن است فایلهای تازه را دربر نگیرد. برای بهروزرسانی دستی:
sudo updatedbدستور find براساس ویژگیهایی مانند نوع، اندازه یا نام فایلها را در مسیر مشخصی جستوجو میکند:
find ~ | wc -lfind ~ -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 | گیگابایت |
| تست | توضیح |
|---|---|
| -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 |
| نمایش مسیر کامل | |
| -quit | خروج پس از اولین نتیجه |
find ~ -type f -name '*.bak' -deleteقبل از حذف، پیشنهاد میشود از -print استفاده شود.
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'find ~ -type f -name 'foo*' -ok ls -l '{}' ';'find ~ -type f -name 'foo*' -exec ls -l '{}' +find ~ -type f -name 'foo*' -print | xargs ls -lfind ~ -iname '*.jpg' -print0 | xargs --null ls -lmkdir -p playground/dir-{001..100}
touch playground/dir-{001..100}/file-{A..Z}find playground -type f -name 'file-A' | wc -l