AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

fd:一個比Find簡單十倍的文件查找命令

來源: 責編: 時間:2024-04-19 17:24:19 150觀看
導讀今天給大家帶來一個超級實用的小工具——fd。這貨是干嘛的呢?簡單來說,它就是用來在你的文件系統中查找文件和目錄的。想象一下,你在一大堆文件中找一個特定的文件,手動找得眼花繚亂?別擔心,fd來拯救你!fd是find命令的一個替

今天給大家帶來一個超級實用的小工具——fd。這貨是干嘛的呢?簡單來說,它就是用來在你的文件系統中查找文件和目錄的。想象一下,你在一大堆文件中找一個特定的文件,手動找得眼花繚亂?別擔心,fd來拯救你!ZQz28資訊網——每日最新資訊28at.com

ZQz28資訊網——每日最新資訊28at.com

fd是find命令的一個替代品,但它更簡單、更快,而且用起來更順手。它可能不支持find所有的強大功能,但對于大多數使用場景來說,它提供了合理的(有觀點的)默認設置。接下來,咱們就來看看怎么用這個小家伙吧!ZQz28資訊網——每日最新資訊28at.com

特點

  • 直觀的語法:用fd PATTERN代替find -iname '*PATTERN*'。
  • 支持正則表達式(默認)和通配符模式。
  • 由于并行遍歷目錄,速度非常快。
  • 使用顏色來高亮不同的文件類型(和ls命令一樣)。
  • 支持并行命令執行。
  • 智能大小寫:默認情況下搜索是不區分大小寫的。如果模式中包含大寫字符,它就會切換到區分大小寫。
  • 默認情況下,忽略隱藏目錄和文件。
  • 默認情況下,忽略你的.gitignore中的模式。
  • 命令名字比find短了50%。

如何使用

首先,如果你想快速了解所有可用的命令行選項,可以運行fd -h來獲取簡潔的幫助信息,或者運行fd --help來獲取更詳細的版本。ZQz28資訊網——每日最新資訊28at.com

簡單搜索

fd的設計目的就是在你的文件系統中查找條目。最基本的搜索你能做的就是用一個參數運行fd:搜索模式。比如,你想找一個包含"netfl"的老腳本:ZQz28資訊網——每日最新資訊28at.com

> fd netflSoftware/python/imdb-ratings/netflix-details.py

如果我們只用一個參數這樣調用fd,它會遞歸地在當前目錄中搜索包含模式"netfl"的任何條目。ZQz28資訊網——每日最新資訊28at.com

正則表達式搜索

搜索模式被視為正則表達式。這里,我們搜索以"x"開頭以"rc"結尾的條目:ZQz28資訊網——每日最新資訊28at.com

> cd /etc> fd '^x.*rc$'X11/xinit/xinitrcX11/xinit/xserverrc

fd使用的正則表達式語法在這里有文檔說明。ZQz28資訊網——每日最新資訊28at.com

指定根目錄

如果我們想搜索一個特定的目錄,可以將其作為第二個參數傳遞給fd:ZQz28資訊網——每日最新資訊28at.com

> fd passwd /etc/etc/default/passwd/etc/pam.d/passwd/etc/passwd

遞歸列出所有文件

fd可以不帶任何參數調用。這對于快速概覽當前目錄中的所有條目(遞歸地,類似于ls -R)非常有用:ZQz28資訊網——每日最新資訊28at.com

> cd fd/tests> fdtestenvtestenv/mod.rstests.rs

如果你想用這個功能來列出給定目錄中的所有文件,你必須使用一個通配符模式,比如.或^:ZQz28資訊網——每日最新資訊28at.com

> fd . fd/tests/testenvtestenv/mod.rstests.rs

搜索特定文件擴展名

多時候,我們對某種類型的所有文件感興趣。這可以通過-e(或--extension)選項來實現。這里,我們搜索fd倉庫中所有的Markdown文件:ZQz28資訊網——每日最新資訊28at.com

> cd fd> fd -e mdCONTRIBUTING.mdREADME.md

-e選項可以與搜索模式結合使用:ZQz28資訊網——每日最新資訊28at.com

> fd -e rs modsrc/fshelper/mod.rssrc/lscolors/mod.rstests/testenv/mod.rs

搜索特定文件名

要找到與提供的搜索模式完全匹配的文件,可以使用-g(或--glob)選項:ZQz28資訊網——每日最新資訊28at.com

> fd -g libc.so /usr/usr/lib32/libc.so/usr/lib/libc.so

隱藏和忽略的文件

默認情況下,fd不搜索隱藏目錄,也不會在搜索結果中顯示隱藏文件。要禁用這種行為,我們可以使用-H(或--hidden)選項:ZQz28資訊網——每日最新資訊28at.com

> fd pre-commit> fd -H pre-commit.git/hooks/pre-commit.sample

如果我們在包含Git倉庫的目錄中工作(或包含Git倉庫),fd不會搜索(也不會顯示)匹配.gitignore模式的文件夾和文件。要禁用這種行為,我們可以使用-I(或--no-ignore)選項:ZQz28資訊網——每日最新資訊28at.com

> fd num_cpu> fd -I num_cputarget/debug/deps/libnum_cpus-f5ce7ef99006aa05.rlib

要真正搜索所有文件和目錄,只需將隱藏和忽略功能結合起來顯示所有內容(-HI),或使用-u/--unrestricted。ZQz28資訊網——每日最新資訊28at.com

匹配完整路徑

認情況下,fd只匹配每個文件的文件名。然而,使用--full-path或-p選項,你可以匹配完整路徑。ZQz28資訊網——每日最新資訊28at.com

> fd -p -g '**/.git/config'> fd -p '.*/lesson-//d+/[a-z]+.(jpg|png)'

命令執行

除了僅僅顯示搜索結果,你通常還想對它們做點什么。fd提供了兩種方法來為你的每個搜索結果執行外部命令:ZQz28資訊網——每日最新資訊28at.com

  • -x/--exec選項為每個搜索結果運行一個外部命令(并行)。
  • -X/--exec-batch選項啟動一次外部命令,將所有搜索結果作為參數。

示例

遞歸查找所有zip壓縮文件并解壓它們:ZQz28資訊網——每日最新資訊28at.com

如果有兩個這樣的文件,file1.zip和backup/file2.zip,這將執行unzip file1.zip和unzip backup/file2.zip。如果文件足夠快地被發現,這兩個unzip進程將并行運行。ZQz28資訊網——每日最新資訊28at.com

找到所有的.h和.cpp文件,并用clang-format -i就地自動格式化它們:ZQz28資訊網——每日最新資訊28at.com

> fd -e h -e cpp -x clang-format -i

注意,clang-format的-i選項可以作為一個單獨的參數傳遞。這就是為什么我們把-x選項放在最后。ZQz28資訊網——每日最新資訊28at.com

找到所有的test_*.py文件并在你最喜歡的編輯器中打開它們:ZQz28資訊網——每日最新資訊28at.com

注意,我們這里使用大寫的-X來打開單個vim實例。如果有兩個這樣的文件,test_basic.py和lib/test_advanced.py,這將運行vim test_basic.py lib/test_advanced.py。ZQz28資訊網——每日最新資訊28at.com

要查看文件權限、所有者、文件大小等詳細信息,你可以讓fd通過運行ls為每個結果顯示它們:ZQz28資訊網——每日最新資訊28at.com

> fd … -X ls -lhd --color=always

這個模式非常有用,以至于fd提供了一個快捷方式。你可以使用-l/--list-details選項以這種方式執行ls:fd … -l。ZQz28資訊網——每日最新資訊28at.com

-X選項結合fd和ripgrep (rg)使用也很有用,以便在某個特定類別的文件中搜索,比如所有的C++源文件:ZQz28資訊網——每日最新資訊28at.com

> fd -e cpp -e cxx -e h -e hpp -X rg 'std::cout'

將所有.jpg文件轉換為.png文件:ZQz28資訊網——每日最新資訊28at.com

> fd -e jpg -x convert {} {.}.png

這里,{}是一個占位符,將被搜索結果的路徑替換(documents/images/party.jpg)。{.}和{}類似,但沒有文件擴展名(documents/images/party)。{/}是一個占位符,將被搜索結果的基礎名替換(party.jpg)。{//}是發現路徑的父目錄(documents/images)。{/.}是基礎名,擴展名已去除(party)。如果你不包括一個占位符,fd會自動在最后添加一個{}。ZQz28資訊網——每日最新資訊28at.com

并行與串行執行

對于-x/--exec,你可以使用-j/--threads選項控制并行作業的數量。使用--threads=1進行串行執行。ZQz28資訊網——每日最新資訊28at.com

排除特定的文件或目錄

有時候我們想要忽略來自特定子目錄的搜索結果。例如,我們可能想要搜索所有隱藏的文件和目錄(-H),但排除所有來自.git目錄的匹配項。我們可以使用-E(或--exclude)選項來實現這一點。它接受一個任意的glob模式作為參數:ZQz28資訊網——每日最新資訊28at.com

我們也可以使用它來跳過掛載的目錄:ZQz28資訊網——每日最新資訊28at.com

> fd -E /mnt/external-drive …

..或者跳過某些文件類型:ZQz28資訊網——每日最新資訊28at.com

要使這些排除模式永久化,可以創建一個.fdignore文件。它們的工作方式類似于.gitignore文件,但是特定于fd。例如:ZQz28資訊網——每日最新資訊28at.com

> cat ~/.fdignore/mnt/external-drive*.bak

注意ZQz28資訊網——每日最新資訊28at.com

fd還支持其他程序使用的.ignore文件,如rg或ag。如果你想讓fd全局忽略這些模式,可以將它們放在fd的全局忽略文件中。這通常位于macOS或Linux的~/.config/fd/ignore中,Windows中位于%APPDATA%/fd/ignoreZQz28資訊網——每日最新資訊28at.com

刪除文件

你可以使用fd刪除所有與你的搜索模式匹配的文件和目錄。如果你只想刪除文件,可以使用--exec-batch/-X選項調用rm。例如,要遞歸刪除所有.DS_Store文件,請運行:ZQz28資訊網——每日最新資訊28at.com

fd -H '^/.DS_Store$' -tf -X rm

如果你不確定,總是先在沒有-X rm的情況下調用fd。或者,使用rm的“交互式”選項:ZQz28資訊網——每日最新資訊28at.com

> fd -H '^//.DS_Store$' -tf -X rm -i

如果你想刪除某類目錄,可以使用同樣的技術。你將不得不使用rm的--recursive/-r標志來刪除目錄。ZQz28資訊網——每日最新資訊28at.com

注意ZQz28資訊網——每日最新資訊28at.com

使用fd … -X rm -r可能會引起競態條件的情況:如果你有一個像…/foo/bar/foo/…這樣的路徑,并且想要刪除所有名為foo的目錄,你最終可能會遇到外層foo目錄首先被刪除的情況,導致(無害的)"'foo/bar/foo':沒有這樣的文件或目錄"錯誤在rm調用中。ZQz28資訊網——每日最新資訊28at.com

命令行選項

這是fd -h的輸出。要查看所有命令行選項的完整集合,請使用fd --help,其中也包括更詳細的幫助文本。ZQz28資訊網——每日最新資訊28at.com

用法:fd [OPTIONS] [pattern] [path]...ZQz28資訊網——每日最新資訊28at.com

參數:ZQz28資訊網——每日最新資訊28at.com

[pattern] 搜索模式(正則表達式,除非使用'--glob';可選)ZQz28資訊網——每日最新資訊28at.com

[path]... 文件系統搜索的根目錄(可選)ZQz28資訊網——每日最新資訊28at.com

選項:ZQz28資訊網——每日最新資訊28at.com

-H, --hidden 搜索隱藏的文件和目錄ZQz28資訊網——每日最新資訊28at.com

-I, --no-ignore 不遵守.(git|fd)ignore文件ZQz28資訊網——每日最新資訊28at.com

-s, --case-sensitive 大小寫敏感搜索(默認:智能大小寫)ZQz28資訊網——每日最新資訊28at.com

-i, --ignore-case 大小寫不敏感搜索(默認:智能大小寫)ZQz28資訊網——每日最新資訊28at.com

-g, --glob 基于通配符的搜索(默認:正則表達式)ZQz28資訊網——每日最新資訊28at.com

-a, --absolute-path 顯示絕對路徑而非相對路徑ZQz28資訊網——每日最新資訊28at.com

-l, --list-details 使用帶有文件元數據的長列表格式ZQz28資訊網——每日最新資訊28at.com

-L, --follow 跟隨符號鏈接ZQz28資訊網——每日最新資訊28at.com

-p, --full-path 搜索完整的絕對路徑(默認:僅文件名)ZQz28資訊網——每日最新資訊28at.com

-d, --max-depth 設置最大搜索深度(默認:無限制)ZQz28資訊網——每日最新資訊28at.com

-E, --exclude 排除與給定的glob模式匹配的條目ZQz28資訊網——每日最新資訊28at.com

-t, --type 按類型過濾:文件(f)、目錄(d/dir)、符號鏈接(l)、可執行文件(x)、空(e)、套接字(s)、管道(p)、塊設備(b)、字符設備(c)ZQz28資訊網——每日最新資訊28at.com

-e, --extension 按文件擴展名過濾ZQz28資訊網——每日最新資訊28at.com

-S, --size 根據文件大小限制結果ZQz28資訊網——每日最新資訊28at.com

--changed-within 按文件修改時間過濾(比這新的)ZQz28資訊網——每日最新資訊28at.com

--changed-before 按文件修改時間過濾(比這舊的)ZQz28資訊網——每日最新資訊28at.com

-o, --owner user:group 按擁有者和/或組過濾ZQz28資訊網——每日最新資訊28at.com

-x, --exec ... 對每個搜索結果執行命令ZQz28資訊網——每日最新資訊28at.com

-X, --exec-batch ... 一次性用所有搜索結果執行命令ZQz28資訊網——每日最新資訊28at.com

-c, --color 使用顏色的時候 [默認:auto] [可能的值:auto, always, never]ZQz28資訊網——每日最新資訊28at.com

-h, --help 打印幫助(查看更多使用'--help')ZQz28資訊網——每日最新資訊28at.com

-V, --version 打印版本ZQz28資訊網——每日最新資訊28at.com

以上就是fd工具的詳細介紹,希望這個小工具能在你的日常開發和文件管理中大顯身手!如果你有任何問題或建議,歡迎到fd的GitHub倉庫: https://github.com/sharkdp/fd 提出。記得,保持文件系統的整潔,讓查找文件變得更簡單!ZQz28資訊網——每日最新資訊28at.com


ZQz28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-84189-0.htmlfd:一個比Find簡單十倍的文件查找命令

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 探索C++:十大讓代碼簡潔的特性

下一篇: 一篇文章帶你了解JavaScript switch

標簽:
  • 熱門焦點
Top