| BFS(1) | General Commands Manual | BFS(1) |
نام (NAME)
bfs - جستجوی سطحاول برای فایلهای شما
خلاصه دستور (SYNOPSIS)
bfs [پرچمها...] [مسیرها...] [عبارت...]
پرچمها (-H/-L/-P و غیره)، مسیرها، و عبارتها را میتوان آزادانه به هر ترتیبی ترکیب کرد.
توضیحات (DESCRIPTION)
bfs یک نسخه جستجوی سطحاول (breadth-first) از دستور یونیکس find(1) است.
bfs تقریباً از همه ویژگیهای پیادهسازیهای اصلی find(1) پشتیبانی میکند، بنابراین خطوط فرمان موجود شما باید همانطور که هستند کار کنند. همچنین برخی ویژگیهای خاص خود را میافزاید، مانند یک تجزیهگر خط فرمان بخشندهتر و برخی گزینههای اضافی.
هر مسیر مشخصشده در خط فرمان به عنوان یک مسیر شروع برای جستجو در نظر گرفته میشود. اگر هیچ مسیری مشخص نشود، دایرکتوری فعلی (.) بهطور پیشفرض جستجو میشود.
مانند find(1)، bfs آرگومانهای خود را به عنوان یک عبارت بولی با اتصال کوتاه تفسیر میکند. به عنوان مثال،
bfs \( -name '*.txt' -or -lname '*.txt' \) -and -print
تمام مسیرهایی را چاپ میکند که یا فایلهای .txt هستند یا پیوندهای نمادین به فایلهای .txt میباشند. -and بین دو عبارت متوالی ضمنی فرض میشود، بنابراین این دستور نیز معادل است:
bfs \( -name '*.txt' -or -lname '*.txt' \) -print
در نهایت، اگر هیچ کنشی مشخص نشود، -print بهطور ضمنی اعمال میشود، بنابراین این دستور نیز معادل است:
bfs -name '*.txt' -or -lname '*.txt'
بیشتر گزینههایی که یک آرگومان عددی N میگیرند، -N یا +N را نیز میپذیرند. -N به معنی «کمتر از N»، و +N به معنی «بیشتر از N» است.
پرچمها (FLAGS)
- -H
- دنبال کردن پیوندهای نمادین مشخصشده در خط فرمان، اما نه در حین جستجو.
- -L
- دنبال کردن تمام پیوندهای نمادین.
- -P
- هرگز پیوندهای نمادین را دنبال نکند (پیشفرض).
- -E
- استفاده از عبارتهای منظم گسترشیافته (مشابه -regextype posix-extended).
- -X
- فیلتر کردن فایلهایی با نامهای ناامن برای xargs(1).
- -d
- جستجو با ترتیب پسمرتبه (مشابه -depth).
- -s
- پیمایش مدخلهای دایرکتوری به ترتیب مرتبشده. مرتبسازی درون هر دایرکتوری بهطور جداگانه انجام میشود، که آن را با bfs ... | sort متفاوت میسازد، اما همچنان یک ترتیب قطعی را فراهم میکند.
- -x
- به نقاط پیوند دیگر وارد نشود (مشابه -xdev).
- -f PATH
- در نظر گرفتن PATH به عنوان مسیری برای جستجو (مفید در صورتی که با خط تیره شروع شود).
- -D FLAG
- فعال کردن پرچم اشکالزدایی (به -D help مراجعه کنید).
-ON
- -O0
- غیرفعالسازی تمام بهینهسازیها.
- -O1
- سادهسازیهای منطقی پایه.
- -O2
- تمام بهینهسازیهای -O1، به همراه حذف کدهای مرده و تحلیل جریان داده.
- -O3
- تمام بهینهسازیهای -O2، به همراه بازآرایی عبارتها برای کاهش هزینه مورد انتظار.
- -O4/-Ofast
- تمام بهینهسازیها، شامل بهینهسازیهای تهاجمی که ممکن است رفتار مشاهدهشده را در حالتهای خاص تغییر دهد.
-S bfs|dfs|ids|eds
- bfs
- جستجوی سطحاول (پیشفرض).
- dfs
- جستجوی عمقاول. حافظه کمتری نسبت به جستجوی سطحاول مصرف میکند، اما معمولاً در بازگرداندن نتایج مرتبط کندتر است.
- ids
- جستجوی عمقیابی تکراری. جستجوهای عمقاول مکرر را با محدودیتهای عمق فزاینده انجام میدهد. این حالت نتایج را با ترتیبی مشابه جستجوی سطحاول، اما با مصرف حافظه کاهشیافته جستجوی عمقاول بازمیگرداند. در عمل تمایل به کندی زیاد دارد، بنابراین فقط در صورتی از آن استفاده کنید که حتماً به ترتیب سطحاول نیاز دارید اما -S bfs حافظه بسیار زیادی مصرف میکند.
- eds
- جستجوی عمقیابی نمایی. مصالحهای بین جستجوی سطحاول و عمقاول، که دامنههای عمق با افزایش نمایی را جستجو میکند (مانند 0-1، 1-2، 2-4، 4-8 و غیره). بسیاری از مزایای جستجوی سطحاول را با مصرف حافظه کمتر جستجوی عمقاول فراهم میکند. معمولاً بسیار سریعتر از -S ids است.
- -jN
- جستجو با N نخ بهصورت موازی (پیشفرض: تعداد پردازندهها، تا سقف 8).
عملگرها (OPERATORS)
- ( expression )
- پرانتزها برای گروهبندی عبارتها با یکدیگر استفاده میشوند. احتمالاً باید \( expression \) بنویسید تا از تفسیر پرانتزها توسط پوسته جلوگیری شود.
! expression
-not expression
expression expression
expression -a expression
expression -and expression
expression -o expression
expression -or expression
- expression , expression
- عملگر «کاما»: expression سمت چپ را ارزیابی میکند اما نتیجه آن را نادیده میگیرد و expression سمت راست را برمیگرداند.
عبارتهای خاص (SPECIAL EXPRESSIONS)
- -exclude expression
- مستثنی کردن تمام مسیرهای منطبق با expression از جستجو. این قدرتمندتر از -prune است، زیرا حتی زمانی که عبارت به دلیل وجود -depth یا -mindepth ارزیابی نمیشود نیز اعمال میگردد. استثناها همیشه پیش از سایر عبارتها اعمال میشوند، بنابراین قرار دادن آنها در ابتدای خط فرمان کمترین ابهام را دارد.
-help
--help
-version
--version
گزینهها (OPTIONS)
-color
-nocolor
- -daystart
- محاسبه زمان نسبت به شروع امروز.
- -depth
- جستجو با ترتیب پسمرتبه (ابتدا فرزندان).
- -follow
- دنبال کردن تمام پیوندهای نمادین (مشابه -L).
- -files0-from FILE
- در نظر گرفتن مسیرهای جداشده با NUL ('\0') در FILE به عنوان نقاط شروع جستجو. برای خواندن مسیرها از ورودی استاندارد، -files0-from - را ارسال کنید.
-ignore_readdir_race
-noignore_readdir_race
-maxdepth N
-mindepth N
- -mount
- مستثنی کردن کامل نقاط پیوند از نتایج.
- -noerror
- نادیده گرفتن هرگونه خطایی که در حین پیمایش رخ میدهد.
- مستثنی کردن فایلها و دایرکتوریهای پنهان.
- -noleaf
- نادیده گرفته میشود؛ جهت سازگاری با GNU find.
- -regextype TYPE
- استفاده از عبارتهای منظم با سبک TYPE. انواع معتبر عبارتند از:
- posix-basic
- عبارتهای منظم پایهای POSIX (پیشفرض).
- posix-extended
- عبارتهای منظم گسترشیافته POSIX.
- ed
- مشابه ed(1) (مشابه posix-basic).
- emacs
- مشابه emacs(1).
- grep
- مشابه grep(1).
- sed
- مشابه sed(1) (مشابه posix-basic).
برای شرح ساختار عبارت منظم، به regex(7) مراجعه کنید.
- -status
- نمایش نوار وضعیت در حین جستجو.
- -unique
- رد کردن فایلهایی که قبلاً دیده شدهاند. بهویژه در کنار -L مفید است.
-warn
-nowarn
- -xdev
- به سایر نقاط پیوند وارد نشود. برخلاف -mount، خود نقطه پیوند همچنان گنجانده میشود.
آزمونها (TESTS)
-amin [-+]N
-Bmin [-+]N
-cmin [-+]N
-mmin [-+]N
-anewer FILE
-Bnewer FILE
-cnewer FILE
-mnewer FILE
-asince TIME
-Bsince TIME
-csince TIME
-msince TIME
-atime [-+]N
-Btime [-+]N
-ctime [-+]N
-mtime [-+]N
- -capable
- یافتن فایلهایی که قابلیتهای capabilities(7) POSIX.1e روی آنها تنظیم شده است.
- -context GLOB
- یافتن فایلهایی که بافتار SELinux آنها با GLOB تطابق دارد.
- -depth [-+]N
- یافتن فایلهایی با عمق N.
- -empty
- یافتن فایلها/دایرکتوریهای خالی.
-executable
-readable
-writable
-false
-true
- -flags [-+]FLAGS
- یافتن فایلهایی با پرچمهای inode منطبق بر FLAGS.
- -fstype TYPE
- یافتن فایلهای روی سیستمهای فایلی با نوع TYPE.
-gid [-+]N
-uid [-+]N
-group NAME
-user NAME
- یافتن فایلهای پنهان (آنهایی که با . شروع میشوند).
-ilname GLOB
-iname GLOB
-ipath GLOB
-iregex REGEX
-iwholename GLOB
- -inum [-+]N
- یافتن فایلهایی با شماره inode برابر N.
- -links [-+]N
- یافتن فایلهایی با N پیوند سخت.
- -lname GLOB
- یافتن پیوندهای نمادینی که مقصد آنها با GLOB تطابق دارد.
- -name GLOB
- یافتن فایلهایی که نام آنها با GLOB تطابق دارد.
- -newer FILE
- یافتن فایلهای تازهتر از FILE.
- -newerXY REFERENCE
- یافتن فایلهایی که زمان X آنها تازهتر از زمان Y در REFERENCE است. X و Y میتوانند هر یک از [aBcm] (access/Birth/change/modification) باشند. همچنین Y میتواند t باشد تا REFERENCE به عنوان یک برچسب زمانی به سبک ISO 8601 تجزیه شود. به عنوان مثال:
• 1991-12-14 • 1991-12-14T03:00 • 1991-12-14T03:00-07:00 • '1991-12-14 10:00Z'
-nogroup
-nouser
-path GLOB
-wholename GLOB
- -perm [-+/]MODE
- یافتن فایلهایی با حالت مجوز منطبق.
- -regex REGEX
- یافتن فایلهایی که کل مسیر آنها با عبارت منظم REGEX تطابق دارد.
- -samefile FILE
- یافتن پیوندهای سخت به FILE.
- -since TIME
- یافتن فایلهای تغییریافته از زمان برچسب زمانی به سبک ISO 8601 TIME. برای مثالهایی از قالب برچسب زمانی، به -newerXY مراجعه کنید.
- -size [-+]N[cwbkMGTP]
- یافتن فایلهایی با اندازه مشخصشده. واحد میتواند یکی از موارد زیر باشد:
• chars (1 بایت) • words (2 بایت) • blocks (512 بایت، پیشفرض) • kiB (1024 بایت) • MiB (1024 کیبیبایت) • GiB (1024 میبیبایت) • TiB (1024 گیبیبایت) • PiB (1024 تبیبایت)
- -sparse
- یافتن فایلهایی که بلوکهای دیسک کمتری از حد انتظار اشغال کردهاند.
- -type [bcdlpfswD]
- یافتن فایلهای با نوع مشخصشده. انواع ممکن عبارتند از:
• دستگاه نویسهای (character)
• دایرکتوری (directory)
• پیوند نمادین (link)
• پایپ (pipe)
• فایل عادی (file)
• سوکت (socket)
• وایتاوت (whiteout)
• درگاه (Door)
چندین نوع را میتوان همزمان و جداشده با کاما مشخص کرد. برای مثال، -type d,f هم با دایرکتوریها و هم با فایلهای عادی تطابق مییابد.
- -used [-+]N
- یافتن فایلهایی که آخرین دسترسی به آنها N روز پس از آخرین تغییر وضعیت آنها بوده است.
- -xattr
- یافتن فایلهایی با ویژگیهای گسترشیافته (xattr(7)).
- -xattrname NAME
- یافتن فایلهایی با ویژگی گسترشیافته NAME.
- -xtype [bcdlpfswD]
- یافتن فایلهایی با نوع مشخصشده، با دنبال کردن پیوندها زمانی که -type دنبال نمیکند، و بالعکس.
کنشها (ACTIONS)
-delete
-rm
- -exec command ... {} ;
- اجرای یک دستور.
- -exec command ... {} +
- اجرای یک دستور با چندین فایل بهطور همزمان.
- -ok command ... {} ;
- پرسش از کاربر برای اجرای یک دستور.
-execdir command ... {} ;
-execdir command ... {} +
-okdir command ... {} ;
- -exit [STATUS]
- خروج فوری با وضعیت مشخصشده (0 در صورت عدم تعیین).
-fls FILE
-fprint FILE
-fprint0 FILE
-fprintf FILE FORMAT
- -limit N
- خروج پس از آنکه این کنش N بار ارزیابی شد.
- -ls
- فهرست کردن فایلها مشابه ls -dils.
- چاپ مسیر فایل یافتشده.
- -print0
- مشابه -print، اما استفاده از نویسه تهی ('\0') به جای خطوط جدید به عنوان جداکننده. در ترکیب با xargs -0 مفید است.
- -printf FORMAT
- چاپ بر اساس یک رشته قالببندی (به find(1) مراجعه کنید). این دستورالعملهای قالببندی اضافی نیز پشتیبانی میشوند:
- %w
- زمان ایجاد فایل، با همان قالب %a/%c/%t.
- %Wk
- فیلد k از زمان ایجاد فایل، با همان قالب %Ak/%Ck/%Tk.
- -printx
- مشابه -print، اما گریز دادن نویسههای فاصلهخالی و نقلقول برای ایمنسازی خروجی برای xargs(1). استفاده از -print0 و xargs -0 به جای آن را در نظر بگیرید.
- -prune
- به داخل این دایرکتوری وارد نشود. اگر -depth فعال باشد (چه صراحتاً یا بهطور ضمنی توسط -delete) هیچ تاثیری ندارد. در این حالت به جای آن از -exclude استفاده کنید.
- -quit
- خروج فوری.
محیط (ENVIRONMENT)
متغیرهای محیطی خاصی بر رفتار bfs اثر میگذارند.
LANG
LC_*
LS_COLORS
BFS_COLORS
- NO_COLOR
- در صورت تنظیم بودن، باعث میشود bfs بهطور پیشفرض از -nocolor استفاده کند (به https://no-color.org/ مراجعه کنید).
- PAGER
- تعیینکننده صفحهبندیکننده (pager) مورد استفاده برای خروجی -help. پیشفرض آن less(1) است، در صورتی که در PATH فعلی یافت شود، در غیر این صورت more(1).
- PATH
- برای یافتن برنامههای اجرایی جهت -exec[dir] و -ok[dir] استفاده میشود.
- POSIXLY_CORRECT
- باعث میشود bfs با استاندارد POSIX.1-2017 برای find(1) سازگاری دقیقتری داشته باشد. در حال حاضر این متغیر دو اثر دارد:
- غیرفعال کردن هشدارها بهطور پیشفرض، زیرا POSIX نوشتن در خطای استاندارد را ممنوع میکند (به جز اعلانهای -ok)، مگر اینکه دستور با کد وضعیت غیرصفر پایان یابد.
- باعث میشود -ls و -fls به جای بلوکهای ۱۰۲۴ بایتی از بلوکهای ۵۱۲ بایتی استفاده کنند. (POSIX این کنشها را مشخص نمیکند، اما پیادهسازیهای find(1) در BSD از بلوکهای ۵۱۲ بایتی استفاده میکنند، در حالی که find(1) گنو بهطور پیشفرض از بلوکهای ۱۰۲۴ بایتی استفاده میکند.)
این متغیر الحاقات گوناگون bfs به قابلیتهای پایه POSIX را غیرفعال نمیکند. POSIXLY_CORRECT همین اثرات را روی find(1) گنو نیز دارد.
مثالها (EXAMPLES)
- bfs
- بدون آرگومان، bfs تمام فایلهای زیر دایرکتوری فعلی را با ترتیب سطحاول چاپ میکند.
- bfs -name '*.txt'
- تمام فایلهای .txt زیر دایرکتوری فعلی را چاپ میکند. عبارت *.txt در گیومه قرار داده شده تا تضمین شود glob توسط bfs پردازش میشود و نه توسط پوسته.
- bfs -name access_log -L /var
- تمام فایلهای با نام access_log را در زیر مسیر /var، با دنبال کردن پیوندهای نمادین پیدا میکند. bfs اجازه میدهد پرچمها و مسیرها در هر کجای خط فرمان قرار گیرند.
- bfs ~ -not -user $USER
- تمام فایلهای موجود در دایرکتوری خانگی شما که متعلق به شما نیستند را چاپ میکند.
- bfs -xtype l
- پیوندهای نمادین شکسته را پیدا میکند.
- bfs -name config -exclude -name .git
- تمام فایلهای به نام config را پیدا کرده و از تمام دایرکتوریهای .git صرفنظر میکند.
- bfs -type f -executable -exec strip {} +
- دستور strip(1) را روی تمام فایلهای اجرایی یافتهشده اجرا میکند و چندین فایل را همزمان به آن ارسال مینماید.
اشکالات (BUGS)
نویسنده (AUTHOR)
Tavian Barnes <tavianator@tavianator.com>
همچنین ببینید (SEE ALSO)
| 2026-06-29 | bfs 4.1.4 |