find命令用於查詢,功能很強大,格式如下:
find pathname -options [-print -exec -ok ...]
pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' \;,注意和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每乙個命令之前,都會給出提示,讓使用者來確定是否執行。
命令選項很多,常用如下:
-name
按照檔名查詢檔案。
-perm
按照檔案許可權來查詢檔案。
-prune
使用這一選項可以使find命令不在當前指定的目錄中查詢,如果同時使用-depth選項,那麼-prune將被find命令忽略。
-user
按照檔案屬主來查詢檔案。
-group
按照檔案所屬的組來查詢檔案。
-mtime -n +n
按照檔案的更改時間來查詢檔案, - n表示檔案更改時間距現在n天以內,+ n表示檔案更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
-nogroup
查詢無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在。
-nouser
查詢無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在。
-newer file1 ! file2
查詢更改時間比檔案file1新但比檔案file2舊的檔案。
-type
查詢某一型別的檔案,諸如:
b - 塊裝置檔案。
d - 目錄。
c - 字元裝置檔案。
p - 管道檔案。
l - 符號鏈結檔案。
f - 普通檔案。
-size n:[c] 查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。
-depth:在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢。
-fstype:查詢位於某一型別檔案系統中的檔案,這些檔案系統型別通常可以在配置檔案/etc/fstab中找到,該配置檔案中包含了本系統中有關檔案系統的資訊。
-mount:在查詢檔案時不跨越檔案系統mount點。
-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中。-amin n
查詢系統中最後n分鐘訪問的檔案
-atime n
查詢系統中最後n*24小時訪問的檔案
-cmin n
查詢系統中最後n分鐘被改變檔案狀態的檔案
-ctime n
查詢系統中最後n*24小時被改變檔案狀態的檔案
-mmin n
查詢系統中最後n分鐘被改變檔案資料的檔案
-mtime n
查詢系統中最後n*24小時被改變檔案資料的檔案
乙個find命令shell指令碼小例子如下,查詢當前目錄下某個字串(通過引數形式傳入指令碼):
#!/bin/sh
for afile in `find ./ -name "*"`; do
#echo $afile;
if [ -f "$afile" ]; then
wordnum=`cat $afile|grep $1 |wc -l`;
if [ "$wordnum" -ge 2 ]; then
echo $afile;
fifi
done
假如shell指令碼命名find_word.sh,同時賦予當前使用者可執行許可權,執行如下命令:
[@131.169 test]# find_word.sh ni
查詢含有 ni 的檔案
shell指令碼之find
find pathname options print exec ok 引數pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的...
Shell指令碼四 find
3 使用exec或ok來執行shell命令 4 find命令結合exec,ok的例子 5 find命令結合xargs的例子 find pathname options print exec ok 引數說明 pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄,...
Shell指令碼中find和grep命令的區別
在shell指令碼中find 和 grep 同樣都是搜尋命令。find 命令用於在系統中搜尋符合條件的檔名,如果需要模糊查詢,則使用萬用字元進行匹配。搜尋時檔名是完全匹配的。例如 root localhost touch abc 建立檔案abc root localhost touch abcd 建...