
fd 如何用 --ignore-file 加載自定義的 .gitignore 格式忽略文件【免費(fèi)下載鏈接】fdA simple, fast and user-friendly alternative to find項(xiàng)目地址: https://gitcode.com/GitHub_Trending/fd/fd如果你在執(zhí)行fd搜索時(shí)希望排除某些文件或目錄但又不想把它們寫(xiě)進(jìn)項(xiàng)目的.fdignore或.gitignore比如這些排除規(guī)則只服務(wù)于某次特定搜索、某臺(tái)機(jī)器上的某個(gè)臨時(shí)目錄fd提供了--ignore-file選項(xiàng)把一個(gè)用.gitignore語(yǔ)法編寫(xiě)的自定義文件加入本次搜索的忽略規(guī)則中。這篇文章基于倉(cāng)庫(kù)中的 man 頁(yè)、命令行定義 src/cli.rs、行走器實(shí)現(xiàn) src/walk.rs 和測(cè)試用例 tests/tests.rs給出從創(chuàng)建忽略文件、執(zhí)行搜索到核對(duì)結(jié)果的操作路徑。先明確 fd 默認(rèn)會(huì)讀哪些忽略文件doc/fd.1 在 DESCRIPTION 一節(jié)說(shuō)明fd默認(rèn)排除隱藏文件和目錄并排除匹配以下規(guī)則的文件gitignore 規(guī)則.gitignore、.git/info/exclude、全局 gitignore 配置.ignore與.fdignore文件中的規(guī)則fd 的全局忽略文件通常是$HOME/.config/fd/ignore。--ignore-file就是在這套默認(rèn)規(guī)則之外額外追加一個(gè)自定義忽略文件的入口。man 頁(yè)對(duì)該選項(xiàng)的原文描述是Add a custom ignore-file in .gitignore format. These files have a low precedence.即文件格式與.gitignore相同且這些文件在忽略規(guī)則中優(yōu)先級(jí)較低。創(chuàng)建自定義忽略文件在搜索目錄下創(chuàng)建任意名稱的文件測(cè)試用例中用的是custom.ignore內(nèi)容按.gitignore格式書(shū)寫(xiě)每行一個(gè)模式。以下兩條模式直接取自 tests/tests.rs 中test_custom_ignore_files測(cè)試用例的內(nèi)容cat custom.ignore EOF C.Foo2 three EOFC.Foo2排除名為C.Foo2的條目three排除名為three的目錄其下的所有條目也一并被排除。執(zhí)行搜索在包含待搜索內(nèi)容的目錄下運(yùn)行fd --ignore-file custom.ignore foo其中foo是測(cè)試用例使用的搜索模式按文件名匹配。custom.ignore替換為你的忽略文件路徑。--ignore-file可以重復(fù)指定src/cli.rs 中該選項(xiàng)的參數(shù)類(lèi)型是VecPathBuf即命令行上可以多次出現(xiàn)把多個(gè)自定義忽略文件疊加到同一次搜索中。執(zhí)行階段的實(shí)現(xiàn)位于 src/walk.rsfd 遍歷config.ignore_files中的每個(gè)文件并調(diào)用builder.add_ignore(ignore_file)加載。如果文件中存在無(wú)法解析的模式fd 會(huì)輸出如下錯(cuò)誤原文Malformed pattern in custom ignore file. {err}.看到這條信息時(shí)應(yīng)檢查忽略文件中對(duì)應(yīng)行的寫(xiě)法。核對(duì)結(jié)果被忽略的條目不再出現(xiàn)tests/tests.rs 中的test_custom_ignore_files給出了一個(gè)完整的文檔示例測(cè)試環(huán)境目錄結(jié)構(gòu)見(jiàn)該測(cè)試上方的DEFAULT_DIRS/DEFAULT_FILES輸出僅作為示例具體結(jié)果取決于你目錄下的實(shí)際文件在不使用--ignore-file時(shí)且測(cè)試環(huán)境不是 git 倉(cāng)庫(kù)模式foo的搜索結(jié)果包含one/two/C.Foo2、one/two/three/d.foo、one/two/three/directory_foo/等條目寫(xiě)入C.Foo2和three兩條規(guī)則后執(zhí)行fd --ignore-file custom.ignore foo期望輸出為a.foo one/b.foo one/two/c.foo對(duì)照即可驗(yàn)證--ignore-file是否生效C.Foo2條目消失three/目錄下的內(nèi)容全部消失。你的實(shí)際目錄中用“加入忽略文件前 / 加入后”兩次運(yùn)行的結(jié)果差集來(lái)判斷即可。與其他排除機(jī)制的分工README.md 的 “Excluding specific files or directories” 一節(jié)把幾種排除方式放在一起說(shuō)明便于按用途選擇-E/--exclude單次命令行的 glob 排除man 頁(yè)注明它 “overrides any other ignore logic”適合臨時(shí)加一兩條規(guī)則.fdignorefd 專屬的持久忽略文件行為類(lèi)似.gitignore但只被 fd 讀取且即使加了--no-ignore-vcs也會(huì)生效全局忽略文件~/.config/fd/ignoremacOS/Linux對(duì)所有目錄生效README 建議在其中加入.git/這樣使用--hidden時(shí).git目錄也不會(huì)出現(xiàn)在結(jié)果里--ignore-file加載一個(gè)顯式指定的.gitignore格式文件規(guī)則優(yōu)先級(jí)最低適合不想改動(dòng)項(xiàng)目?jī)?nèi)或全局配置文件、只想為當(dāng)前這次搜索附加一份排除規(guī)則的場(chǎng)景。另外man 頁(yè)列出了--no-ignore-I與--no-ignore-vcs會(huì)跳過(guò)哪些來(lái)源.gitignore、.git/info/exclude、全局 gitignore、.ignore、.fdignore、fd 全局忽略文件當(dāng)發(fā)現(xiàn)結(jié)果里不該被忽略的條目時(shí)可對(duì)照這兩個(gè)選項(xiàng)確認(rèn)當(dāng)前哪些規(guī)則源被關(guān)閉了。小結(jié)用.gitignore格式寫(xiě)一個(gè)文件通過(guò)fd --ignore-file path加入本次搜索可重復(fù)指定多個(gè)文件驗(yàn)證方式是核對(duì)搜索結(jié)果被模式命中的條目含被忽略目錄下的所有子條目不再出現(xiàn)在輸出中自定義忽略文件優(yōu)先級(jí)最低模式寫(xiě)錯(cuò)時(shí)會(huì)看到Malformed pattern in custom ignore file.報(bào)錯(cuò)。如果想了解 fd 其他搜索選項(xiàng)類(lèi)型過(guò)濾、深度限制、執(zhí)行命令等繼續(xù)查閱 doc/fd.1 的 OPTIONS 一節(jié)即可?!久赓M(fèi)下載鏈接】fdA simple, fast and user-friendly alternative to find項(xiàng)目地址: https://gitcode.com/GitHub_Trending/fd/fd創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考