find命令主要是用於檔案查詢, 非常有用, 但對於初學者, 會發現它有點怪異. 為啥呢? 因為用的少, 用多了, 習慣了, 也就不怪異了. 讓我們先從乙個簡單例子開始.
$ find / -name test
./backup/ modules/field/modules/test
$「查詢根目錄下名稱為』test』的檔案」, 這條命令會讓系統查詢所有檔案, 包括掛載的檔案裝置. 這可能需要花費一段時間, 尤其是查詢網路共享硬碟. 不過, 我們可以通過引數-mount告訴, 系統忽略掛載裝置:
$ find / -mount -name test
find命令格式如下:
find [path] [options] [tests] [actions]
[path]
路徑; 應該不難理解. 這裡可以使用絕對路徑, 也快成使用相對路徑.
[options]
引數; 比較常用的引數用:
-depth: 先查詢子目錄再檢視當前目錄 -follow: 跟蹤查詢連線檔案 -maxdepths n: 子目錄遞迴最大深度 -mount(or -xdev): 忽略掛載檔案
[tests]
條件匹配;
我們可以通過以下操作符, 將匹配條件 連起來:
-not (!): 方向匹配 -and (-a): 而且 -or (-o): 或者
我們還可以通過括號將一些匹配符號合併. 例如
\(-newer -o -name 『*test』 \)
現在舉乙個稍微有點複雜的例子, 查詢當天被訪問過或修改過的檔案, 檔名包含』python』, 而起檔案所有者是』anthony』:
# find / \( -atime -1 -or -mtime -1 \) -and -name '*python*' -and -user 'anthony'
/home/anthony/svn_code/subversion-1.7.2/subversion/bindings/swig/python
/home/anthony/svn_code/subversion-1.7.2/subversion/bindings/ctypes-python
/home/anthony/python
/home/anthony/python/python-3.2.2/build/temp.linux-x86_64-3.2/home/anthony/python
/home/anthony/.local/lib/python3.2
#[actions]
操作;-exec command: 執行命令, 具體介紹見後文. -ok command: 和-exec一樣, 除了命令執行需要使用者許可. -print: 列印檔案名 -ls: 列出檔案詳細資訊
現在舉例說明-exec command
anthony@z:~$ find -mtime -1 -type f -exec ls -l {} \;
-rw-r--r-- 1 anthony anthony 0 apr 5 12:04 ./search/search.txt
-rw------- 1 anthony anthony 22997 apr 5 12:04 ./.viminfo
-rw------- 1 anthony anthony 125 apr 5 14:25 ./.lesshst
anthony@z:~$
簡單地說, -exec或-ok, 將查詢到的檔案作為引數傳遞給後面的命令執行, 而引數的位置用{}標識, 即命令中, 「{}」替換成find查詢出來的檔名, 最後」\;」表示結束符.
linux中find常見用法
find pathname options print exec ok name 按照檔名查詢檔案。perm 按照檔案許可權來查詢檔案。prune 使用這一選項可以使find命令不在當前指定的目錄中查詢,如果同時使用 depth選項,那麼 prune將被find命令忽略。user 按照檔案屬主來查詢...
Linux中find命令用法
linux下的find命令,顧名思義,它是在目錄結構中搜尋檔案,並執行指定的操作。linux下find命令提供了相當多的命令引數,也就是以何種條件進行查詢。命令格式 find 路徑 命令引數 表示式 預設路徑是當前路徑,預設表示式是 print print 將查詢到的檔案輸出到標準輸出 例如 在終端...
Linux中Find的用法
今天我們來分享一下linux下的find的用法。linux下的find命令是用來在目錄檔案中搜尋檔案,並能夠執行指定操作。因此對於一切皆檔案的linux系統來說,查詢檔案的find命令是非常重要的。熟練掌握find命令能夠幫助你更好的使用和管理linux下的檔案。下面我們來介紹功能強大且地位不低的f...