Linux 搜索文件
【whereis 命令】
1.命令格式:whereis [選項] 文件名
????常用選項:
| -b | 只查找二進制文件 |
| -m | 只查找說明文件 |
| -s | 只查找原始代碼文件 |
| -B<目錄> | 只在設置的目錄下查找二進制文件 |
| -M<目錄> | 只在設置的目錄下查找說明文件 |
| -S<目錄> | 只在設置的目錄下查找原始代碼文件 |
| -f? | 不顯示文件名前的路徑名稱 |
| -u | 查找不包含指定類型的文件 |
2.用途:只能用于程序名的搜索,而且只搜索二進制文件(-b)、man 說明文件(-m)、源代碼文件(-s),若省略參數,則返回所有信息。
3.特點:簡單快速
【which 命令】
1.命令格式:which?[選項] 文件名
????常用選項:
| -n<文件名長度> | 制定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名 |
| -p<文件名長度> | 與-n參數相同,但此處的<文件名長度>包含了文件的路徑 |
| -w | 指定輸出時欄位的寬度 |
2.用途:用于查找并顯示給定命令的絕對路徑,只從環境變量 PATH 指定的路徑中搜索命令,通常使用 which 來確定是否安裝了某個指定的軟件。
3.特點:簡單精確
【locate?命令】
1.命令格式:locate?[選項] 查找字符串(要查找的文件名中含有的字符串)
? ? 常用選項:
| -c | 只統計數目 |
| -i? | 可以忽略大小寫進行查找 |
| -b | 只查找二進制文件 |
| -m | 只查找說明文件 |
| -s | 只查找原始代碼文件 |
| -d<目錄> 或 --database=<目錄> | 指定數據庫所在的目錄 |
| -u | 更新 slocate 數據庫 |
2.用途:常用來查找指定目錄下的不同文件類型。
注:locate 是通過 Linux 系統自動創建的 /var/lib/locatedb 數據庫查找,這個數據庫中含有本地所有文件信息。此數據庫不是實時更新的,系統會定時每天自動執行 updatedb 命令更新一次,因此使用 locate 命令無法查到最新變動文件,為了避免這種情況,因此可在使用 locate 前,先使用 updatedb 命令,手動更新數據庫。
3.特點:快速全面
【find?命令】
1.命令格式:find 指定目錄 [參數] 文件名?
? ? 常用選項:
| -name<范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
| -iname<范本樣式> | 此參數的效果和指定“-name”參數類似,但忽略字符大小寫的差別 |
| -user<擁有者名稱> | 查找符和指定的擁有者名稱的文件或目錄 |
| -group<群組名稱> | 查找符合指定之群組名稱的文件或目錄 |
| -perm<權限數值> | 查找符合指定的權限數值的文件或目錄 |
| -size<文件大小> | 查找符合指定的文件大小的文件 |
| -path<范本樣式> | 指定字符串作為尋找目錄的范本樣式 |
| -ctime<24小時數> | 查找在指定時間之時被更改的文件或目錄,單位以24小時計算 |
| -atime<24小時數> | 查找在指定時間曾被存取過的文件或目錄,單位以24小時計算 |
| -mtime<24小時數> | 查找在指定時間曾被更改過的文件或目錄,單位以24小時計算 |
| -newer<參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄 |
2.用途:在指定目錄下,可通過文件類型、文件名、文件屬性等進行查找。若不設置任何參數,則將在當前目錄下查找子目錄與文件,并將查找到的子目錄和文件全部進行顯示。
3.特點:精準細致
4.實例
1)列出所有長度為零的文件:find . -empty
2)否定參數
找出 /home 下不是以 .txt 結尾的文件:find /home ! -name "*.txt"
3)根據文件權限/所有權進行匹配
當前目錄下搜索出權限為 777 的文件:find -perm 777
找出當前目錄用戶 Tom 擁有的所有文件:find -user Tom
找出當前目錄用戶組 Sunk 擁有的所有文件:find -group Sunk
4)根據文件進行匹配????列出當前目錄及子目錄下所有文件和文件夾:find .
????在 /home 目錄下查找以 .txt 結尾的文件名:find /home -name "*.txt"
????在 /home 目錄下查找以 .txt 結尾的文件名,但忽略大小寫:find /home -iname "*.txt"
????當前目錄及子目錄下查找所有以 .txt 和 .pdf 結尾的文件:find . -name "*.txt" -o -name "*.pdf"?
????匹配文件路徑或者文件:find /usr/ -path "*local*"
注:-o 或者、-a 并且、-not 相反 ?
5)根據文件類型進行搜索:find . -type 類型參數
類型參數列表:
| f? | 普通文件 |
| l | 符號鏈接文檔 |
| d | 目錄文檔 |
| c | 字符設備文檔 |
| b | 塊設備文檔 |
| s | 套接字文檔 |
| p | 管道文檔 |
當前目錄下搜索出所有普通文件:find .-type f
6)根據文件大小進行匹配:find . -type f -size 文件大小單元
文件大小單元:
| b | 塊(512字節) |
| c | 字節 |
| w | 字(2字節) |
| k | 千字節 |
| M | 兆字節 |
| G | 吉字節 |
搜索大于10KB的文件:find . -type f -size +10k
搜索小于10KB的文件:find . -type f -size -10k
搜索等于10KB的文件:find . -type f -size 10k
7)根據文件時間戳進行搜索:find . -type f 時間戳
時間戳:
| 訪問時間(-atime/天,-amin/分鐘) | 用戶最近一次訪問時間 |
| 修改時間(-mtime/天,-mmin/分鐘) | 文件最后一次修改時間 |
| 變化時間(-ctime/天,-cmin/分鐘) | 文件數據元(例如權限等)最后一次修改時間 |
注:以 mtime n為例,n 為數字
搜索最近七天內被訪問過的所有文件:find . -type f -atime -7
搜索恰好在七天前被訪問過的所有文件:find . -type f -atime 7
搜索超過七天內被訪問過的所有文件:find . -type f -atime +7
搜索訪問時間超過10分鐘的所有文件:find . -type f -amin +10
總結
以上是生活随笔為你收集整理的Linux 搜索文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 训练日志 2018.10.24
- 下一篇: linux 其他常用命令