linux系统文件查找实验报告,Linux 文件查找与打包
Linux運維與DevOps實戰-實驗7
一、find
# find 命令在目錄層次下搜尋查找一個文件
# 并且會打印所找到文件的有關信息
# 語法
find [path...] [expression]
# 查找 /etc 目錄下,文件大小大于 100k 的文件
$ sudo find /etc/ -size +100k
1. 文件名
常用通配符:
*: 匹配 0 個 或多個字符
?: 匹配任意 1 個字符
[string]:匹配 string 字符串中的任意一個字符,如 [abc] 匹配 abc 三個字符中的任意一個,[a-z0-9] 匹配小寫字母和數字。
\ :移除特殊字符的特殊含義,轉義
基礎名稱模式:
-name :指定名稱
-iname :指定名稱忽略大小寫
全名模式:
-path :指定路徑
-ipath : 指定路徑忽略大小寫
-wholename :功能同 -path 類似
-iwholename:功能同 -path 類似,忽略大小寫
-regex:正則表達式
-iregex:正則表達式忽略大小寫
# 查找 /usr 目錄下以字母 r 開頭, .txt 結尾的文件
$ find /usr -name "r*.txt"
# 使用 -iname 參數,不區分大小寫
$ find /usr -iname "r*.txt"
# 查找當前目錄下以 ter 開頭 zsh 結尾的文件
$ find -name "ter*zsh"
# 在 bin 目錄下,查找路徑為 bin/python 的文件
$ cd /usr
$ find /usr/bin -path bin/python
$ find bin -path bin/python
2. 鏈接
-lname :匹配文件是否為一個符號鏈接
-ilname :匹配文件是否為一個符號鏈接忽略大小寫
# /usr/bin/python文件就是一個符號鏈接
$ ls -l /usr/bin/python
# 查找 /usr/bin 目錄下文件名包含 python3 的文件
$ find /usr/bin -name "*python3*"
# 查找 /usr/bin 目錄下文件名包含 python3 的鏈接
$ find /usr/bin -lname "*python3*"
-samefile :尋找指定文件的硬鏈接
-inum n :尋找指定inode號的硬鏈接
-links n : 查找硬鏈接數為n的文件
$ touch file1
$ echo "test_hard_link" > file1
# 創建文件 file1 的硬鏈接 file2
$ ln file1 file2
# 創建文件 file1 的硬鏈接 file3
$ ln file1 file3
# 尋找file1 文件 inode 相同的硬鏈接
$ find -samefile file1
# 尋找 inode 等于159160的硬鏈接
$ find -inum 159160
# 匹配當前目錄下硬鏈接數為 3 的文件
$ find -links 3
3. Time
-atime n: 尋找當前時間到n天前之間訪問的文件
-ctime n: 尋找當前時間到n天前之間狀態發生改變的文件
-mtime n: 尋找當前時間到n天前之間內容發生修改的文件
-amin n: 訪問,細化至分鐘
-cmin n: 狀態改變,細化至分鐘
-mmin n: 內容修改,細化至分鐘
# 查找當前目錄修改文件時間在 5 分鐘 到 24 小時之間的文件
$ find -mtime 0 -mmin +5
4. Size
-size n[bckwMG]: n 代表數據參數b 代表塊 block,c 代表字節,k 代表 1024 字節,即 kb,w 代表字符數量(2-byte 的字符),M 代表兆字節,G 代表千兆字節
# 查找當前目錄下的大于 100k 的文件
$ find -size +100k
5. Type
-type c: c 代表數據類型d 目錄 f 普通文件 l 符號鏈接(部分)
# 查找 /etc 目錄下文件大于 30k 的普通文件
sudo find /etc -type f -size +30k
6. Owner
-user uname : uname 代表所屬用戶名
-group gname : gname 代表所屬用戶組
-uid n :n 代表uid
-gid n :n 代表gid
# 查找當前目錄下所屬用戶為 shiyanlou 的文件
$ find -user shiyanlou
# 查找當前目錄下所屬用戶為 root 的文件
# root 用戶的 id 為 0
$ find -uid 0
7. File Mode Bits
-readable : 可讀
-writable : 可寫
-executable :可執行
# 查看當前用戶對 /etc 目錄文件名以 a 結尾,有可執行的權限的文件
$ find /etc -executable -name "*a"
8. Exec
用法
-exec 選項后面緊跟要執行的命令或腳本,然后是 {}、空格和 ;。
# 顯示當前文件夾下所有普通文件的詳細信息
$ find . -type f -exec ls -l {} \;
# 刪除當前目錄下修改時間在 14 天前的文件
$ find . -type f -mtime +14 -exec rm {} \;
# 刪除當前目錄下后綴為 log 的文件,刪除前需要確認
$ find . -name '*.log' -ok rm {} \;
# 查找 /etc 目錄下以 passwd 打頭,并且內容包含 root 的文件
$ find /etc -name 'passwd*' -exec grep 'root' {} \;
二、locate
locate 命令其實是在一個保存有系統中所有文件名和目錄名的數據庫中去查找。而數據庫中的內容并不是實時更新的,該數據庫的更新操作可以使用 updatedb 命令來執行。也可以使用 --basename 參數,查找基礎名稱。
# 查找文件名中含有 /usr/bin/python 的文件
$ locate /usr/bin/python
# 查找基礎名稱中帶有 shiyanlou 的文件
$ locate --basename shiyanlou
三、whereis
也是在一個保存有系統中所有文件名和目錄名的數據庫中去查找。不同的在于whereis 命令查找的是二進制文件,源,或者 man 手冊的文件。
-f 定義搜索范圍
-b 僅搜索二進制文件
-m 僅搜索 man 手冊
-s 僅搜索源
# 搜索 python 相關的幫助手冊
$ whereis -m python
四、which
which 命令一般用于查找 shell 命令的完整路徑。該命令在環境變量PATH中列出的目錄中搜索可執行文件或腳本進行匹配查找。
-a 代表列出所有匹配的查找結果
# 查找 python 可執行文件的路徑
$ which python
五、gzip
gzip 命令用于對文件進行壓縮,生成的壓縮文件會以 .gz 結尾。而對應的解壓縮的命令則是 gunzip。
用法:
$ gzip -v file
$ gunzip -v file
# 創建一個 file4 文件
# 使用gzip壓縮
$ touch file4
$ gzip file4
$ ls
# 解壓文件 file4
$ gunzip file4.gz
六、tar
tar 是用于創建文件檔案的命令行工具,多用于備份文件。顧名思義,tar 命令可以將一系列的文件打包到一個大文件中,也可以將大文件解包以恢復數據。
用法:
tar [OPTION...] [FILE]
-c 或 --create :創建一個存檔
-r :將文件附加到檔案文件末尾
-z 或 --gzip :指定 gzip 格式
-v 或 --verbose :顯示文件處理的詳細過程
-f :指定檔案文件名稱
-x :還原檔案文件
# 使用 tar 命令將file1 file2 file3 file4 歸檔到 test.tar
$ tar -cvf test.tar file1 file2 file3 file4
$ ls
# 刪除四個文件,從 test.tar 恢復文件
$ rm file1 file2 file3 file4
$ ls
$ tar -xvf test.tar
總結
以上是生活随笔為你收集整理的linux系统文件查找实验报告,Linux 文件查找与打包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux某个目录环境变量,在linux
- 下一篇: ubuntu如何安装linux驱动程序,