自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通過find命令找到你要找的東西

系統(tǒng) Linux
find 命令有巨多的選項可以幫助你準確定位你在 Linux 系統(tǒng)上需要尋找的文件。這篇文章討論了一系列非常有用的選項。

[[317715]]

find 命令有巨多的選項可以幫助你準確定位你在 Linux 系統(tǒng)上需要尋找的文件。這篇文章討論了一系列非常有用的選項。

在 Linux 系統(tǒng)上有許多用于查找文件的命令,而你在使用它們時也有巨多的選項可以使用。

例如,你不僅可以通過文件的名稱來查找文件,還可以通過文件的所有者或者組、它們的創(chuàng)建時間、大小、分配的權限、最后一次訪問它們的時間、關聯(lián)的信息節(jié)點,甚至是文件是否屬于系統(tǒng)上不再存在的帳戶或組等等來查找文件。

你還可以指定搜索從哪里開始,搜索應該深入到文件系統(tǒng)的什么位置,以及搜索結(jié)果將告訴你它所找到的文件的數(shù)量。

而所有這些要求都可以通過 find 命令來處理。

下面提供了根據(jù)這些要求查找文件的示例。在某些命令中,錯誤(例如試圖列出你沒有讀取權限的文件)輸出將被發(fā)送到 /dev/null,以便我們不必查看它。或者,我們可以簡單地以 root 身份運行以避免這個問題。

請記住,還有更多的其他選項。這篇文章涵蓋了很多內(nèi)容,但并不是 find 命令幫助你定位查找文件的所有方式。

選擇起點

使用 find,你可以選擇一個起點或從你所在的位置開始。要選擇的搜索的起點,請在單詞 find 后輸入它。例如,find /usrfind ./bin 將在 /usr 目錄或當前位置下的 bin 目錄開始搜索,而 find ~ 將在你的主目錄中開始搜索,即使你當前位于當前文件系統(tǒng)中的其他位置。

選擇你要找的

最常用的搜索策略之一是按名稱搜索文件。這需要使用 -name 選項。

默認情況下,find 會顯示找到的文件的完整路徑。如果你在命令中添加 -print,你會看到同樣的結(jié)果。如果你想查看與文件相關的詳細信息—-例如:文件的長度、權限等,你需要在你的 find 命令的末尾添加 -ls 參數(shù)。

  1. $ find ~/bin -name tryme
  2. /home/shs/bin/tryme
  3. $ find ~/bin -name tryme -print
  4. /home/shs/bin/tryme
  5. $ find ~/bin -name tryme -ls
  6. 917528 4 -rwx------ 1 shs shs 139 Apr 8 2019 /home/shs/bin/tryme

你也可以使用子字符串來查找文件。例如,如果你將上面示例中的 tryme 替換為 try*,你將會找到所有名稱以 try 開頭的文件。(LCTT 譯注:如果要使用通配符 * ,請將搜索字符串放到單引號或雙引號內(nèi),以避免通配符被 shell 所解釋)

按名稱查找文件可能是 find 命令最典型的用法,不過還有很多其他的方式來查找文件,并且有這樣做的需要。下面的部分展示了如何使用其他可用的方式。

此外,當按文件大小、組、索引節(jié)點等條件來搜索文件時,你需要確認找到的文件與你要查找的文件是否相匹配。使用 -ls 選項來顯示細節(jié)是非常有用。

通過大小查找文件

按大小查找文件需要使用 -size 選項并且對相應規(guī)范使用一點技巧。例如,如果你指定 -size 189b,你將找到 189 個塊大小的文件,而不是 189 個字節(jié)。(LCTT 譯注:如果不跟上單位,默認單位是 b。一個塊是 512 個字節(jié)大小,不足或正好 512 個字節(jié)將占據(jù)一個塊。)對于字節(jié),你需要使用 --size 189c(字符)。而且,如果你指定 --size 200w ,你將會找到 200 個“word”的文件——以“雙字節(jié)增量”為單位的字,而不是“我們互相談論的那些事情”中的單詞。你還可以通過以千字節(jié)(k)、兆字節(jié)(M)和千兆字節(jié)(G)為單位提供大小來查找文件。(LCTT 譯注:乃至還有 T、P

大多數(shù)情況下,Linux 用戶會搜索比選定大小要大的文件。例如,要查找大于 1 千兆字節(jié)的文件,你可以使用這樣的命令,其中 +1G 表示“大于 1 千兆字節(jié)”:

  1. $ find -size +1G -ls 2>/dev/null
  2. 787715 1053976 -rw-rw-r-- 1 shs shs 1079263432 Dec 21 2018 ./backup.zip
  3. 801834 1052556 -rw-rw-r-- 1 shs shs 1077809525 Dec 21 2018 ./2019/hold.zip

通過索引節(jié)點號查找文件

你可以通過用于維護文件元數(shù)據(jù)(即除文件內(nèi)容和文件名之外的所有內(nèi)容)的索引節(jié)點來查找文件。

  1. $ find -inum 919674 -ls 2>/dev/null
  2. 919674 4 -rw-rw-r-- 1 shs shs 512 Dec 27 15:25 ./bin/my.log

查找具有特定文件所有者或組的文件

按所有者或組查找文件也非常簡單。這里我們使用 sudo 來解決權限問題。

  1. $ sudo find /home -user nemo -name "*.png" -ls
  2. 1705219 4 drwxr-xr-x 2 nemo nemo 4096 Jan 28 08:50 /home/nemo/Pictures/me.png

在下面這個命令中,我們尋找一個被稱為 admins 的多用戶組擁有的文件。

  1. # find /tmp -group admins -ls
  2. 262199 4 -rwxr-x--- 1 dory admins 27 Feb 16 18:57 /tmp/testscript

查找沒有所有者或組的文件

你可以使用如下命令所示的 -nouser 選項來查找不屬于當前系統(tǒng)上的任何用戶的文件。

  1. # find /tmp -nouser -ls
  2. 262204 4 -rwx------ 1 1016 1016 17 Feb 17 16:42 /tmp/hello

請注意,該列表顯示了舊用戶的 UID 和 GID,這清楚地表明該用戶未在系統(tǒng)上定義。這種命令將查找?guī)粢褟南到y(tǒng)中刪除的用戶創(chuàng)建在主目錄之外的文件,或者在用戶帳戶被刪除后而未被刪除的主目錄中創(chuàng)建的文件。類似地,-nogroup 選項也會找到這樣的文件,尤其是當這些用戶是相關組的唯一成員時。

按上次更新時間查找文件

在此命令中,我們在特定用戶的主目錄中查找過去 24 小時內(nèi)更新過的文件。sudo 用于搜索另一個用戶的主目錄。

  1. $ sudo find /home/nemo -mtime -1
  2. /home/nemo
  3. /home/nemo/snap/cheat
  4. /home/nemo/tryme

按上次更改權限的時間查找文件

-ctime 選項可以幫助你查找在某個參考時間范圍內(nèi)狀態(tài)(如權限)發(fā)生更改的文件。以下是查找在最后一天內(nèi)權限發(fā)生更改的文件的示例:

  1. $ find . -ctime -1 -ls
  2. 787987 4 -rwxr-xr-x 1 shs shs 189 Feb 11 07:31 ./tryme

請記住,顯示的日期和時間只反映了對文件內(nèi)容進行的最后更新。你需要使用像 stat 這樣的命令來查看與文件相關聯(lián)的三個狀態(tài)(文件創(chuàng)建、修改和狀態(tài)更改)。

按上次訪問的時間查找文件

在這個命令中,我們使用 -atime 選項查找在過去兩天內(nèi)訪問過的本地 pdf 文件。

  1. $ find -name "*.pdf" -atime -2
  2. ./Wingding_Invites.pdf

根據(jù)文件相對于另一個文件的時間來查找文件

你可以使用 -newer 選項來查找比其他文件更新的文件。

  1. $ find . -newer dig1 -ls
  2. 786434 68 drwxr-xr-x 67 shs shs 69632 Feb 16 19:05 .
  3. 1064442 4 drwxr-xr-x 5 shs shs 4096 Feb 16 11:06 ./snap/cheat
  4. 791846 4 -rw-rw-r-- 1 shs shs 649 Feb 13 14:26 ./dig

沒有相應的 -older 選項,但是你可以用 ! -newer (即更舊)得到類似的結(jié)果,它們基本上一樣。

按類型查找文件

通過文件類型找到一個文件,你有很多選項——常規(guī)文件、目錄、塊和字符文件等等。以下是文件類型選項列表:

  1. b 塊特殊文件(緩沖的)
  2. c 字符特殊文件(無緩沖的)
  3. d 目錄
  4. p 命名管道(FIFO
  5. f 常規(guī)文件
  6. l 符號鏈接
  7. s 套接字

這里有一個尋找符號鏈接的例子:

  1. $ find . -type l -ls
  2. 805717 0 lrwxrwxrwx 1 shs shs 11 Apr 10 2019 ./volcano -> volcano.pdf
  3. 918552 0 lrwxrwxrwx 1 shs shs 1 Jun 16 2018 ./letter -> pers/letter2mom

限制查找的深度

-mindepth-maxdepth 選項控制在文件系統(tǒng)中搜索的深度(從當前位置或起始點開始)。

  1. $ find -maxdepth 3 -name "*loop"
  2. ./bin/save/oldloop
  3. ./bin/long-loop
  4. ./private/loop

查找空文件

在這個命令中,我們尋找空文件,但不進入目錄及其子目錄。

  1. $ find . -maxdepth 2 -empty -type f -ls
  2. 917517 0 -rw-rw-r-- 1 shs shs 0 Sep 23 11:00 ./complaints/newfile
  3. 792050 0 -rw-rw-r-- 1 shs shs 0 Oct 4 19:02 ./junk

按權限查找文件

你可以使用 -perm 選項查找具有特定權限集的文件。在下面的示例中,我們只查找常規(guī)文件(-type f),以避免看到符號鏈接,默認情況下符號鏈接被賦予了這種權限,即使它們所引用的文件是受限的。

  1. $ find -perm 777 -type f -ls
  2. find: ‘./.dbus’: Permission denied
  3. 798748 4 -rwxrwxrwx 1 shs shs 15 Mar 28 2019 ./runme

使用查找來幫助你刪除文件

如果使用如下命令,你可以使用 find 命令定位并刪除文件:

  1. $ find . -name runme -exec rm {} \;

{} 代表根據(jù)搜索條件找到的每個文件的名稱。

一個非常有用的選項是將 -exec 替換為 -ok。當你這樣做時,find 會在刪除任何文件之前要求確認。

  1. $ find . -name runme -ok rm -rf {} \;
  2. < rm ... ./bin/runme > ?

刪除文件并不是 -ok-exec 能為你做的唯一事情。例如,你可以復制、重命名或移動文件。

確實有很多選擇可以有效地使用 find 命令,毫無疑問還有一些在本文中沒有涉及到。我希望你已經(jīng)找到一些新的,特別有幫助的。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2019-02-26 10:15:13

GitHub 開源代碼

2018-05-09 12:27:34

Linux命令尋找文件

2021-02-03 21:24:42

Joplin筆記

2018-05-28 11:10:08

Linux命令IP地址

2021-04-06 14:04:40

合成身份欺詐攻擊網(wǎng)絡安全

2015-08-27 16:55:21

2009-08-03 09:20:18

find命令詳解find命令linux find命

2011-09-02 17:40:11

iPhone應用SoundHound歌曲

2023-10-08 08:51:14

搜索與查詢結(jié)構化查詢

2021-02-05 10:27:25

Windows 10Windows微軟

2022-07-06 23:34:00

LinuxIP

2009-08-03 10:12:37

find命令詳解find命令linux

2012-05-11 10:07:55

Linuxfind

2021-12-27 11:29:17

AI集成程序

2015-07-17 14:28:41

金融服務華為

2019-12-10 10:03:18

Linux命令行工具

2022-11-16 13:16:23

微軟Windows

2022-05-10 08:08:01

find命令Linux

2010-03-09 13:54:05

Linux find命

2010-03-18 16:34:33

Linux命令
點贊
收藏

51CTO技術棧公眾號