如何在 Linux 上使用 fd 命令
已發表: 2022-01-29 在 Linux 上, fd
是find
命令的一種更簡單的替代方法。 它具有簡化的語法,使用合理的默認值,並具有內置的常識行為。 讓我們逐步了解它。
fd 與 find:有什麼區別?
fd
命令並不是要取代傳統的find
命令,它一直在 Linux 上,嗯,永遠。 相反, fd
試圖以更直接的方式滿足find
的大多數常見用途——而且,它通常比find
快八到九倍。 您可以在項目的 GitHub 存儲庫頁面上查看它的一些基準測試。
fd
具有彩色輸出,類似於某些ls
模式。 它是遞歸的,但默認情況下不搜索隱藏目錄。 它知道 Git,並且會自動忽略“.gitignore”文件中的任何模式。
fd
默認情況下不區分大小寫。 但是,如果您的搜索模式包含大寫字母,則fd
會以區分大小寫的模式運行。 當然,您可以覆蓋默認值,但在許多情況下,它們對您有利。
相關:如何使用所有 Linux 的搜索命令
安裝 fd
從 Ubuntu 19.04 (Disco Dingo) 開始,您可以通過使用apt-get
調用官方維護的軟件包來直接安裝fd
。 如果您運行的是舊版本的 Ubuntu,請查看 Git 中心頁面上的安裝說明。
鍵入以下內容:
sudo apt-get install fd-find
在 Ubuntu 中,該命令是fdfind
以避免與另一個現有實用程序發生名稱衝突。 如果你希望它是fd
,你可以設置一個別名:
別名 fd=fdfind
要使別名持久化以便在重新啟動後仍然可用,請將其放入“.bashrc”或“.bash_aliases”文件中。
相關:如何在 Linux 上創建別名和 Shell 函數
要在 Fedora 上安裝fd
,請輸入以下命令:
sudo dfn install fd-find
在 Manjaro 上,鍵入以下內容:
sudo pacman -Syu fd
fd 與 fdfind
為避免混淆,我們在 Ubuntu 測試 PC 上保留了該命令的默認名稱fdfind
。 fd
和fdfind
是完全相同的命令,正如您將在以下示例中看到的那樣(如果您要求fdfind
顯示其版本,它稱自己為“fd”):
fdfind --版本
我們將調用命令“fed”,但在示例中,我們將使用 Ubuntu 的“fdfind”。 在其他 Linux 發行版上,您可以鍵入“fd”而不是“fdfind”以節省一些擊鍵。
使用 fd 進行簡單搜索
如果你使用fd
沒有命令行選項,它的行為有點像ls
,除了它默認列出子目錄中的文件。
鍵入以下內容:
查找
對於不同的文件類型和目錄,輸出以不同的顏色顯示。
要查看特定類型的文件,請使用
(擴展名)選項。 請注意,您不必在擴展名前加上句點 (.),也不區分大小寫。-e
例如,您可以鍵入以下內容:
fdfind -e png
現在,列出的唯一文件是 PNG 圖像文件。
要查找單個文件,請在命令行中鍵入其名稱,如下所示:
fdfind index.page
找到該文件並且恰好位於子目錄中。 我們不必告訴fd
遞歸搜索。
要在特定目錄中開始搜索,請在命令行中包含文件路徑。 以下命令將在“/etc”目錄中開始搜索,並查找文件名中包含“passwd”的文件:
fdfind 密碼 /etc
在這裡,我們正在搜索文件名中包含“coord”的所有 C 源代碼文件:
fdffind -ec 坐標
找到了兩個匹配的文件。
fd 和 Git
Git 是一個非常流行的源代碼版本控制系統。 如果您在計算機上使用 Git,您可能會使用“.gitignore”文件來告訴 Git 它應該關注哪些文件,以及可以忽略哪些文件。 默認情況下, fd
尊重“.gitignore”文件中的設置。
在這個目錄中,我們有一個 Git 存儲庫和“.gitignore”文件。 我們輸入以下內容:
ls -adl .git*
讓我們讓fd
列出文件名中包含“coord”的所有文件。 然後我們將重複搜索並使用-I
(不忽略)選項。 這告訴fd
忽略“.gitignore”文件中的設置並報告每個匹配的文件。
為此,我們鍵入以下內容:
fd查找坐標
fdfind 坐標 -I
第二組結果中的兩個額外文件是目標文件。 這些是在編譯文件程序時創建的。 然後鏈接器使用它們來創建程序的最終可執行版本。
源代碼版本控製程序通常會忽略目標文件。 每次編譯程序時它們都會重新生成,因此您不必存儲它們的副本。 “.gitignore”文件中有一個條目指示 Git 忽略目標文件,默認情況下, fd
也會忽略它們。
-I
(不忽略)選項強制fd
返回它找到的所有內容,而不是由“.gitginore”文件引導。
文件類型和區分大小寫
您可以要求fd
查找目錄、文件(包括可執行文件和空文件)和符號鏈接。 您可以使用-t
(類型)選項,後跟以下字母之一:
- f :文件。
- d :目錄。
- l :符號鏈接。
- x :可執行文件。
- e : 空文件。
下面查找名為 images 的目錄:
fdfind -td 圖片
找到一個匹配項,比當前子目錄低一個子目錄。
讓我們看看區分大小寫如何與搜索模式一起工作。 我們鍵入以下內容首先搜索文件名中包含“geo”的文件,然後搜索文件名中包含“Geo”的文件:
fdffind -tf 地理
fdfind -tf 地理
在第一個命令中,我們使用了小寫搜索模式,這導致fd
以不區分大小寫的方式運行。 這意味著“Geo”和“geo”都是有效的匹配項。
我們的第二個命令包含一個大寫字符,這導致fd
以區分大小寫的方式運行。 這意味著只有“Geo”是有效匹配。
命令執行
fd
命令允許您啟動另一個命令並在每個找到的文件上執行它。
假設我們知道在我們的源代碼目錄樹中某處有一個 Zip 文件。 我們可以使用以下命令查找它,該命令會搜索帶有 ZIP 擴展名的文件:
fdffinf -e 壓縮包
使用-x
(exec) 選項,您可以將每個找到的文件傳遞給另一個命令以由它處理。 例如,我們可以鍵入以下內容來調用解壓縮實用程序來解壓縮我們的 ZIP 文件(“{}”是代表找到的文件的佔位符):
fdffind -e zip -x 解壓{}
這將解壓縮當前工作目錄中的文件。 如果我們希望將其解壓縮到包含 ZIP 文件的目錄中,我們可以使用以下佔位符之一:
- {} :找到的文件的完整文件路徑和名稱。
- {/} : 找到的文件的文件名。
- {//} :包含找到的文件的目錄。
- {/.} :找到的文件的文件名,不帶擴展名。
為了在包含它的目錄中找到並解壓縮我們的 ZIP 文件,我們可以使用 unzip -d
(目錄)選項,並傳入父目錄佔位符( {//}
):
fdffind -e zip -x 解壓 {} -d {//}
然後找到 ZIP 文件並將其解壓縮到其父目錄中。
你的首選?
因為它以如此簡單的方式涵蓋了最常見的用途,所以fd
可以很容易地成為您的首選“查找”命令。 每當您需要它更高級的功能時,您總是可以回到那個經驗豐富的老手, find
.
Linux 命令 | ||
文件 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev ·查看·字符串·類型·重命名· zip ·解壓縮· mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
流程 | 別名· screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat ·超時·牆·是·殺死·睡眠· sudo · su ·時間· groupadd · usermod ·組· lshw ·關機·重新啟動·停止·關機· passwd · lscpu · crontab ·日期· bg · fg | |
聯網 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦