如何使用find命令在Linux中查找文件

2021-02-21 Linux公社

Linux Find命令是Linux系統管理員工具庫中最強大的工具之一。

Find是一個命令行實用程序,它允許您根據用戶給定的表達式搜索目錄層次結構中的文件和目錄,並對每個匹配的文件應用用戶指定的操作。

您可以使用find命令根據文件權限,類型,日期,所有權,大小等搜索文件。它還可以與其他工具(如grep或sed)結合使用,以對這些文件執行操作。

Linux查找命令語法

在討論如何使用find命令之前,讓我們先回顧一下基本語法。

find實用程序表達式採用以下形式:

find [options] [path...] [expression]

options屬性控制符號連結,調試選項和優化方法的處理。
    path ...屬性定義find將搜索文件的起始目錄。
    expression屬性由選項,搜索模式和由運算符分隔的操作組成。

我們來看看以下命令:

linuxidc@linuxidc:~$ find  -L /home/linuxidc/linuxmi/ -name "*.js" -exec chmod 644 {} \;

此命令包含一個參數-L(options),它允許find跟隨符號連結,在/home/linuxidc/linuxmi/ (path…)下搜索所有以.js(expression)結尾的文件的整個目錄樹,並設置所有匹配的權限 文件到644。

按類型查找文件

要指定要查找的文件的類型,請使用-type參數。

您可以使用以下描述符指定文件類型:

f:常規文件
d:目錄
l:符號連結
c:字符設備
b:阻止設備
p:命名管道(FIFO)
s:套接字

例如,如果要查找當前目錄中的所有目錄,只需運行:

linuxidc@linuxidc:~/linuxmi$ find . -type d
.
./www.linuxidc.com
./m.linuxidc.com
./linuxidc.com
linuxidc@linuxidc:~/linuxmi$

或者,如果要列出系統類型上的所有字符設備:

find / -type c

要將所有文件權限更改為644並將所有目錄權限更改為755,請遞歸運行以下命令:

linuxidc@linuxidc:~/linuxmi$ find /home/linuxidc/linuxmi -type d -exec chmod 0755 {} \;
linuxidc@linuxidc:~/linuxmi$ find /home/linuxidc/linuxmi -type f -exec chmod 0644 {} \;

按名稱查找文件

按名稱查找文件可能是find命令最常用的用法。 要按名稱查找文件,請將-name選項與要搜索的文件的名稱一起傳遞。

要在/home/linuxidc/linuxmi目錄中搜索名為document.pdf的文件,您將使用以下命令:

linuxidc@linuxidc:~$ sudo find /home/linuxidc/linuxmi -type f -name linuxidc.pdf
[sudo] linuxidc 的密碼:
/home/linuxidc/linuxmi/linuxidc.pdf
linuxidc@linuxidc:~$ sudo find /home/linuxidc -type f -name linuxidc.pdf
/home/linuxidc/linuxmi/linuxidc.pdf
/home/linuxidc/Documents/linuxidc.pdf
linuxidc@linuxidc:~$

如果要進行不區分大小寫的搜索,請使用-iname更改-name選項:

sudo find /home/linuxidc -type f -iname linuxidc.pdf

上面的命令將匹配linuxidc.pdf,LINUXIDC.pdf ...。

按擴展名查找文件

按擴展名搜索文件與按名稱搜索文件相同。 例如,如果要查找/home/linuxidc目錄中以.log.gz結尾的所有文件,可以使用:

linuxidc@linuxidc:~$ su -
密碼:
root@linuxidc:~# find /home/linuxidc -type f -name '*.log.gz'
/home/linuxidc/linuxmi/linuxidc.log.gz
root@linuxidc:~#

值得一提的是,當我們使用通配符時,我們必須引用模式或使用反斜槓\來轉義星號*符號,以便它不會被shell解釋。

如果要查找與正則 *.log.gz不匹配的所有文件,可以使用-not參數,例如查找所有不以*.log.gz結尾的文件,您將使用:

linuxidc@linuxidc:~$ find /home/linuxidc/linuxmi -type f -not -name '*.log.gz'
/home/linuxidc/linuxmi/linuxidc.pdf
/home/linuxidc/linuxmi/linuxidc.js
linuxidc@linuxidc:~$

按大小查找文件

要根據大小查找文件,只需傳遞-size參數和大小標準。 您可以使用以下後綴來指定大小:

b:512位元組塊(默認)
c:字節
w:雙字節字
k:Kilobytes
M:兆字節
G:千兆字節

假設您正在'/ tmp'目錄中搜索正好1024位元組的所有文件。 你將不得不運行如下命令:

linuxidc@linuxidc:~$ su -
密碼:
root@linuxidc:~# find /tmp -type f -size 1024c

find命令還允許您搜索大於或小於指定大小的文件。

在下面的示例中,我們將在當前工作目錄中搜索小於1MB的所有文件,請注意size值之前的減號:

root@linuxidc:~# find . -type f -size -1M
./.local/share/zeitgeist/fts.index/flintlock
./.local/share/Trash/files/wine-ubuntu-wine-builds-artful.list.save
./.local/share/gnome-settings-daemon/input-sources-converted
./.mozilla/firefox/jrqxh55p.default/SecurityPreloadState.txt
./.mozilla/firefox/jrqxh55p.default/AlternateServices.txt
./.mozilla/firefox/jrqxh55p.default/.parentlock
./.config/enchant/en_US.exc
./.config/enchant/en_US.dic
root@linuxidc:~#

如果要搜索大小超過1MB的文件,則需要使用加號+符號:

root@linuxidc:~# find . -type f -size +1M

您甚至可以搜索大小範圍內的文件,例如以下命令將查找3到4 MB之間的所有文件:

root@linuxidc:~# find . -type f -size +3M -size 4M

推薦一本Linux命令行入門到精通的書籍

《Linux命令行大全》主要介紹Linux命令行的使用,循序漸進,深入淺出,引導讀者全面掌握命令行的使用方法。
喜歡的可以點擊下面的連結購買:

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-07/153205.htm

相關焦點

  • 如何使用find和locate 命令在Linux 中查找文件和目錄?
    既然是Linux系統,那麼使用命令行形式去查找肯定是最快最直接的方法,雖然現在有很多連接工具可以提供查找功能,但是歸根到底還是利用了相關查找的命令,那麼今天瑞哥就帶大家來學習一下,如何用命令的形式查找文件。
  • 如何在 Linux 中查找一個文件
    沒有圖形界面,很難在不同文件夾間瀏覽,找到需要的文件。本篇教程中,我會展示如何在 Linux 中查找特定的文件。第一步要做的是通過 SSH 連接到你的 Linux[1]。在 Linux 中查找文件有兩種方法。一種是使用 find命令,另外一種是使用 locate 命令。我們先看第一種。
  • 如何在 Linux 中查找文件 | Linux 中國
    編譯自 | https://opensource.com/article/18/4/how-find-files-linux  作者 | Lewis Cowles 譯者 | geekpi 💎 💎 共計翻譯:705 篇 貢獻時間:1646 天使用簡單的命令在 Linux 下基於類型、內容等快速查找文件。
  • 如何在Linux中使用
    IC設計和驗證環境基本都是基於linux環境,工作中經常需要在特定目錄下查找指定文件,有什麼方便的手段準確查找文件呢? find命令在目錄層次結構下搜索文件,默認遞歸搜索所給目錄及其子目錄,對查找到的每一個文件名(目錄名也屬於文件名)一次次進行後面表達式的判斷,決定是否列印搜索到的文件名、或者進行其他的操作。
  • Linux下強大的查找命令find 用法和常見用例
    因為Linux下面一切皆文件,經常需要搜索某些文件來編寫,所以對於Linux來說find是一條很重要的命令。Linux下面的find指令用於在目錄結構中搜索文件,並執行指定的操作。它提供了相當多的查找條件,功能很強大。在不指定查找目錄的情況下,find會在對整個系統進行遍歷。即使系統中含有網絡文件系統,find命令在該文件系統中同樣有效。
  • 如何在 Linux 中使用 find
    (點擊上方公眾號,可快速關注)英文:Ben Cotton,翻譯:Linux中國/geekpilinux.cn/article-
  • Linux中的文件查找技巧
    前言Linux常用命令中,有些命令可以幫助我們查找二進位文件,幫助手冊或源文件的位置,也有的命令可以幫助我們查找磁碟上的任意文件,今天我們就來看看這些命令如何使用。whichwhich命令會在PATH變量指定的路徑中,搜索某個系統命令的位置。
  • 謹慎使用 Linux find 命令 | Linux 中國
    當使用 Linux 下的 find 命令時,請使用 -ok 選項來避免文件被意外刪除,這個選項會在移除任何文件之前都會請求你的許可。最近有朋友提醒我有一個有用的選項來更加謹慎地運行 find 命令,它就是 -ok。除了一個重要的區別之外,它的工作方式與 -exec 相似,它使 find 命令在執行指定的操作之前請求權限。這有一個例子。
  • 乾貨:Linux中3個文件查找相關命令詳解
    我們經常在linux要查找某個文件,但不知道放在哪裡了,可以使用下面的一些命令來搜索:which  查看可執行文件的位置
  • 詳解Linux中3個文件查找相關命令
    來自:民工哥技術之路我們經常在linux要查找某個文件,但不知道放在哪裡了,可以使用下面的一些命令來搜索:which命令的作用是,在PATH
  • Linux中強大且常用命令:find、grep
    是linux中最有用的命令之一。-perm 755 –print 在當前目錄下查找文件權限位為755的文件,即文件屬主可以讀、寫、執行,其他用戶可以讀、執行的文件-prune使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那麼-prune將被find命令忽略。
  • 在 Linux 中如何從命令行查找 VirtualBox 版本 | Linux 中國
    如果你想知道如何在 Linux 中從命令行查找 VirtualBox 版本,可以採用以下幾種方法。在 Linux 中從命令行查找 VirtualBox 版本要查找已安裝的 VirtualBox 的版本,請打開終端並運行以下命令:示例輸出:在 Linux 中從命令行查找 Virtualbox 版本正如你在上面的輸出中看到的,安裝的 VirtualBox 的版本是 5.2。
  • Linux/Unix重要find命令詳解
    基於文件類型搜索使用-type可以指定搜索的文件類型,linux/unix將所有的的一切都視為文件(文件類型有:普通文件f,目錄d,符號連結 l,字符設備c,塊設備b,套接字s,FIFO-p),使用 -type選項我們能夠對文件類型進行過濾。
  • 優秀的Linux實用工具:古老的find命令的高級替代
    如果使用不帶命令行選項的fd,則其行為類似於ls,不同之處在於它默認情況下在子目錄中列出文件。linuxmi@linuxmi:~/www.linuxmi.com$ fdfind要查看特定類型的文件,請使用-e(擴展名)選項。請注意,您不必在擴展名前加句點(.),也不區分大小寫。
  • Linux之find命令的參數詳解
    可以使用某種文件名模式來匹配文件,記住要用引號將文件名模式引起來。 不管當前路徑是什麼,如果想要在自己的根目錄$HOME中查找文件名符合*.log的文件,使用~作為 'pathname'參數,波浪號~代表了當前用戶的家目錄。
  • Linux系統強大的查找命令find用法
    Linux系統下find是最常用的指令,find命令在目錄結構中搜索文件,並執行指定的操作,掌握它的形式與用法對運維工作很有用處。
  • 5 個用於在 Linux 終端中查找域名 IP 地址的命令 | Linux 中國
    本教程介紹了如何在 Linux 終端驗證域名或計算機名的 IP 地址。本教程將允許你一次檢查多個域。你可能已經使用過這些命令來驗證信息。但是,我們將教你如何有效使用這些命令在 Linux 終端中識別多個域的 IP 地址信息。可以使用以下 5 個命令來完成此操作。◈ dig 命令:它是一個用於查詢 DNS 名稱伺服器的靈活命令行工具。
  • Linux 中高頻使用的 find 命令匯總集錦
    目錄下所屬組為rumenz的文件> find ~ -group rumenz -print查找~目錄下所屬者為rumenz的文件> find ~ -user rumenz -print查找屬主帳戶已經被刪除的文件,查找在/etc/passwd不存在的帳戶> find /home
  • 31個實用Linux find命令的案例
    用文件名查找文件2.用文件名查找文件,忽略大小寫3. 使用mindepth和maxdepth限定搜索指定目錄的深度4. 在find命令查找到的文件上執行命令5. 相反匹配6. 使用inode編號查找文件7. 根據文件權限查找文件8.
  • 在 Linux 中如何查找一個命令或進程的執行時間 | Linux 中國
    在類 Unix 系統中,你可能知道一個命令或進程開始執行的時間,以及一個進程運行了多久[1]。 但是,你如何知道這個命令或進程何時結束或者它完成運行所花費的總時長呢? 在類 Unix 系統中,這是非常容易的! 有一個專門為此設計的程序名叫 GNU time。 使用 time 程序,我們可以輕鬆地測量 Linux 作業系統中命令或程序的總執行時間。