>[success] # 文件查找 -- find
1. **find** -- 用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名,`find 起始路徑 -name "被查找文件"`(如下圖和window 查找文件順序很像)

2. 如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。
并且將查找到的子目錄和文件全部進行顯示。(**如下圖 find 查找了當前的所有文件和目錄,并且包括子目錄和文件**)

3. **find命令** 可進行的查找如文件名,文件大小,所有者,所屬組,是否為空,訪問時間,修改時間等。也就是說可以**用于搜索機器上所有的資料,按照文件名字搜索,linux一切皆文件**
>[info] ## 參數
`find [搜索范圍] [搜索條件] ` # find path [options]
* 舉例子`find . -maxdepth 1 -name "a"` 找到當前目錄 深度為1層 名為a 的

~~~
pathname 命令所查找的目錄路徑
'options 模塊'
-depth 從指定目錄下最深層的子目錄開始查找
-maxdepth levels 查找的最大目錄級數,levels為自然數
-regextype type 改變正則表達式的模式,默認為emacs
'tests 模塊'
-mtime [-n|n|+n] 按照文件的修改時間來查找文件(-n 文件更改距離現在n天以內,+n表示文件更改時間距離現在n天以前,n是距離現在第n天)
-atime [-n|n|+n] 按照文件的訪問時間來查找文件
-ctime [-n|n|+n] 按照文件的狀態改變時間來查找文件
-amin 按照文件的訪問時間來查文件,單位為分鐘
-cmin 按照文件的狀態時間改變來查找文件,單位為分鐘
-mmin 按照文件的狀態修改時間來查找文件,單位為分鐘
-group 按照文件屬主來查找文件
-name 按照文件名來查找文件,只支持*,?,[]等特殊通配符
-newer 查找更改時間比指定文件新的文件
-nogroup 查找沒有有效用戶組的文件,即/etc/group中不存在
-nouser 查找沒有有效屬主的文件,即/etc/passwd中不存在
-path pattern 指定路徑樣式
-perm 按照文件權限來查找文件
-regex 按照正則表達式
-iregex 接正則表達式,不區分大小寫
-size n[cwbkmg] 查找文件長度為n塊的文件
-user 按照文件屬主來查找文件
'-type 模塊'
b 塊設備
c 字符設備
d 目錄
p 管道文件
l 符號鏈接文件
f 普通文件
s socket文件
D door
'actions模塊'
-delete 將查找出的文件刪除
-exec 對匹配的文件執行該參數所給出的shell命令
-ok 和-exec作用相同,但在執行每個命令之前,都會讓用戶先確定
-prune 使用這一選項可以使find命令不在當前指定目錄中查找
-print 將匹配的文件輸出到標準輸出
! 取反
-a 取交集
-o 取并集
~~~
>[danger] ##### 按名稱搜索
* `find / -name 11.txt` 搜索根目錄下 `name `是`11.txt` 的文件 避免大范圍的搜索,會非常消耗系統資源
* `find /etc -name yum.conf` 在/etc目錄下文件yum.conf
* `find . -name 'yum\*' ` 表示當前目錄下查找文件名開頭是字符串`yum`的文件
>[danger] ##### 通配符
1. `find`是在系統當中搜索符合條件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
~~~
* 匹配任意內容
? 匹配任意一個字符
[] 匹配任意一個中括號內的字符
~~~
2. `find . -name "ab[cdef].txt"`查找當前文件夾下 文件名是 符合`ab[cdef].txt`規則的文件
>[danger] ##### -i -- 不區分大小寫
`find . -iname "Ab[cdef].txt"`
>[danger] ##### -user -- 按所有者進行搜索
`find /root -user root` 在root目錄下查找用戶所有者是root
`find /root -nouser` 無用戶所有者
>[danger] ##### -mtime -- 按時間搜索
`find . -mtime +5` ,`+、- `表示大于和小于
| 參數 | 含義 |
| --- | --- |
| atime | 文件訪問時間 |
| ctime | 改變文件屬性 |
| mtime | 修改文件內容 |
| 參數 | 含義 |
| --- | --- |
| \-5 | 5天內修改的文件 |
| 5 | 5天前當前修改的文件 |
| +5 | 5天前修改的文件 |
>[danger] ##### -size -- 按大小搜索
`find . -size +0k` 注意 k小寫,M大寫,`+、- `表示大于和小于,`kMG`表示大小單位,k(小寫字母)表示kb,M表示MB,G表示GB
| 參數 | 含義 |
| --- | --- |
| \-8k | 小于8K |
| 8k | 等于8K |
| +8k | 大于8K |
| +8M | 小于8M |
* 使用條件參數
1. 參數有: **!,-and(-),-or(-o)**
~~~
(1)find /tmp -size +10c -and -mtime +2 #在/tmp目錄下查找大于10字節并在2天前修改的文
件
(2)find / -user root -or -user susan #在/目錄下查找用戶是root或者susan用戶的文件
(3)find /tmp ! -user susan #在/tmp目錄中查找所有不屬于susan用戶的文件
~~~
>[danger] ##### 常用文件特征查找
~~~
(1)find / -atime -2 # 查找在系統中最后48小時訪問的文件 (Access Time,文件讀取訪問時
間)
(2)find / -empty # 查找在系統中為空的文件或者文件夾
(3)find / -group susan # 查找在系統中屬于group為susan的文件
(4)find / -mtime -1 #查找在系統中最后24小時里修改過的文件 (modify time)
(5)find / -user susan #查找在系統中屬于susan這個用戶的文件
(6)find / -size +10000c #查找出大于10000字節的文件(c:字節,w:雙字,k:KB,M:MB,G:GB)
(7)find / -size -1000k #查找出小于1000KB的文件
~~~
>[danger] ##### 簡單使用的語法
~~~
1.'find?[你要從哪找]?-type?[文件類型]?-size??[文件內容大小]??-name??[內容名字是什么]'
1.1.-type f 是找普通文本文件 / d 是找 文件夾 類型
2.'find / -name "\*.txt' -- 在系統上 全局搜索,所有的.txt文件
3.'find /etc -type f -name "ifcfg\*" ' -- etc目錄下網卡名字是以ifcfg開頭的 ,文本類型文件
5.'find . -type f -name "python\*" ' -- 找出當前目錄下所有的pyton 名字相關文件(f)內容
6.'find / -size +10M -name "\*.txt"' -- 全局搜索,超過10M大小的 txt文本
~~~
>[danger] ##### 案例
~~~
1.'find / -maxdepth 3 - type f -atime 7 -delete ' -- 恰好在7天內被訪問過的文件刪除
2.'find /tmp -size +10k -a -size -20k'-- 查找/etc目錄下,大于10KB并且小于20KB的文件
3.find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
exec 對上個命令的結果進行操作
-a and 邏輯與,兩個條件都滿足
-o or 邏輯或,兩個條件滿足一個就可以
~~~
- 安裝-VMware 虛擬機
- 遠程連接
- Windows -- wsl
- Linux -- 認識 Linux 和操作系統
- Linux -- Linux 和 windows 對比
- Linux -- 命令提示符
- Linux -- 文件目錄
- Linux -- 文件類型
- Linux -- 絕對和相對路徑
- Linux -- 常用快捷鍵
- Linux -- 三種幫助命令
- 幫助命令 -- man
- 幫助命令 -- help
- 幫助命令 -- info
- Linux -- 指令
- alias -- 設置別名
- history -- 查看歷史命令
- cd -- 更改目錄(切換文件夾)
- pwd -- 打印目錄
- ls -- 列出文件內容
- mkdir -- 創建文件夾
- rmdir -- 刪除一個空的目錄
- touch -- 創建普通文件/修改時間
- cp -- 復制粘貼
- mv -- 移動和重名
- rm -- 刪除
- cat/tac -- 查看純文本文件
- more/less -- 分頁讀取信息
- head -- 從文本開頭查看
- tail -- 從文本結尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 統計文件的行數、單詞、字節數
- tr -- 替換、縮減或刪除字符
- find -- 文件查找
- grep -- 文件當中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二進制/源代碼文件 路徑
- which -- 查找環境變量
- 壓縮和解壓
- ln -- 鏈接
- wget -- 下載指定的url資源
- 重定向 -- << /< />/> >
- 邏輯控制 -- &&
- echo -- 輸出指定內容
- date/cal -- 查看日期和日歷
- Linux -- 進程管理
- Linux-- ps 指令
- vi/vim - 文本編輯器
- 更多
- Linux-- 開關機命令
- Liunx -- 退出登錄
- Linux-- 查看登錄用戶信息
- Linux -- 環境變量
- Linux -- 用戶
- Linux -- 文件管理
- 文件權限設置 -- chmod
- 更改文件的擁有者 -- chown
- 默認權限 -- umask
- Linux -- 用戶
- 新建/刪除用戶 -- useradd/userdel
- 修改用戶屬性 -- usermod/chage
- 新建/刪除用戶組 -- groupadd/groupdel
- 用戶切換 -- su/sudo
- 用戶/用戶組的配置文件
- 用戶家目錄被刪除解決
- last、 lastlog命令查看用戶詳細的登錄信息
- Linux -- shell
- Linux -- 管道符號
- shell -- 執行
- shell -- 變量
- shell -- 字符串
- shell -- 數組
- Shell -- declare 設置變量屬性
- shell -- 數學計算
- shell -- 變量作用域
- shell -- 位置參數變量
- shell -- read
- shell - if 語句
- shell -- test
- shell -- case
- Linux -- 循環
- Linux -- 軟件包管理