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