find /etc/rc.d -name '*crond' -exec file {} \;
查找/etc/rc.d目錄下面所有以crond結束的文件,并使用file指令查看其屬性,注意:exec和file間是一個空格,file和{}間是一個空格,file和\;之間是一個空格,\;是一個整體。
要在/usr/linux中查找所有的*.h,并在這些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名,有以下幾種方法實現(xiàn)
find /usr/linux -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
grep SYSCALL_VECTOR /usr/linux/*.h | cut -d':' -f1 | uniq > filename
find /usr/linux -name "*.h" -exec grep "SYSCALL_VECTOR" {} \; -print
我用find / -name filename| rm -rf,不成功,請問為什么不成功?
find / -name filename -exec rm -rf {} \;
find . -name filename |rm -rf試一下{} 表示你找出來的結果。
\; 則相當于“憲法”,沒什么說頭,就是這么規(guī)定的,在 -exec 后面需要一個表示該命令終結的的符號。可以在 man find 中找到***。
要讓rm識別find的結果,如下:
find / -name filename |xargs rm -rf
之所以find . -name filename |rm -rf不通過,是因為rm命令不接受從標準輸入傳過來的指令
查找含特定字符串的文件
例如查找當前目錄下含有"the string you want find..."字符串的文件:
$find . -type f -exec grep “the string you want find...” {} ; -print
從根目錄開始查tmpfile,一旦查到馬上刪除
find / -name "tmpfile" -exec rm {} \;
find 的perm問題
請問一下以下命令什么意思?關鍵是那個數(shù)字前的-,其他都還知道
find -name ".*" -perm -007
我知道
find -name ".*" -perm 755
這個是用來查找權限位為755的隱藏文件
噢,對了還有,我上邊的命令都省略了find的pathname參數(shù) find默認是查找當前工作目錄的嗎?
如果我用 -ok 替代 -exec, 那么還需要加上 {} \; 嗎?
這個已經(jīng)清楚,仍然需要,因為 -ok 只是 -exec 的提示模式,它只是多了一個確認操作的步驟,剛才沒有讀懂那幾句E文的意思 呵呵 不好意思
-007是指查找所有用戶都可讀、寫、執(zhí)行的文件,要小心呀~~~
解釋解釋?
find -name ".*" -perm -007 和 find -name ".*" -perm 777 有區(qū)別嗎?
-007是怎么來得呢?
不過有一個問題
我用 find . -perm -100 會列出當前目錄 . , 這是為什么呢?
下面引用由explover在 2002/10/01 06:15am 發(fā)表的內(nèi)容:
-007是指查找所有用戶都可讀、寫、執(zhí)行的文件,要小心呀~~~
-007是查找含其它用戶(不同組,非屬主)可讀,寫,執(zhí)行的文件.并不一定要同組可讀寫,-是指最少權限為007.
下面引用由一顆小白菜在 2002/10/01 10:16am 發(fā)表的內(nèi)容:
OK了, 呵呵
不過有一個問題
我用 find . -perm -100 會列出當前目錄 . , 這是為什么呢?
這種方法不會準確的找出目錄的. -100是指權限至少是屬主可運行.
在unix系統(tǒng)下,你可以擁有對目錄文件的執(zhí)行權你才可以進入一個目錄.這便是目錄文件被列出的原因.
find . -perm -001 -print找到往往是目錄文件.
我的意思當然不是使用這種方法來找目錄,只不過不明白其中的 -100 意義了
那以此類推,是不是 -010是指權限至少是owner同組可執(zhí)行的嗎?也就是說其實這里的010和-是分開的,-表示一個至少的意思,而且010才是真正用來描述權限位的?
這樣子就明白了 謝謝你噢
將find出來的東西拷到另一個地方?
find *.c -exec cp '{}' /tmp ';'
如果有特殊文件,可以用cpio,也可以用這樣的語法:
find dir -name filename -print | cpio -pdv newdir
找出磁盤中某個大小范圍內(nèi)的文件
比如要查找磁盤中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;
如何用find查找某一天更改的文件?
可以使用這一行命令來實現(xiàn):
A=`find ~ -print` | ls -l --full-time $A 2>/dev/null | grep "Jun 27" | grep 1998
使用find 命令查找某個時間段的shell怎么寫。比如11點到12點的。thanks
創(chuàng)建一個腳本judgetime,內(nèi)容如下:
ls -l $*|awk '{split($8,hour,":");if((hour[1]>23 || hour[1] < 1)&&hour[1]<24)print}'
到要查找的目錄下,運行
find ./ -name "*" -exec judgetime {} \;
注意時間格式為24小時制。
thank you ,如果我要精確到分鐘呢
touch -t 04241112 starttemp #精確到12分鐘
touch -t 04241220 endtemp #截止到12點20
find [dir] -newer starttemp -a ! -newer endtemp -exec ls -l {} \;
newer?
那昨天12:10文件如何呢?
每天執(zhí)行的時候,用當天的日期和時間戳替換一下不就行了嗎?
我不知道他是不是把所有的11:00~12:00的都找出來,是不是只執(zhí)行一次還是每天都執(zhí)行?
這種情況俺猜想是自己的東西放在哪忘了,只記得當時是深夜了。
有道理!
不愧是斑竹!
不光知道怎么解決問題,還知道在什么情況下出現(xiàn)這類問題,佩服佩服!
問題又出現(xiàn)了。創(chuàng)建這個文件的時候。本來應該是時間的一欄現(xiàn)在寫上了2002,而不是12:00.
等到12:00過了吧!
刪除指定日期的文件
find ./ -name 文件名 -exec rm -f {} \;
例:刪除當前30天內(nèi)沒用過的文件,用如下命令:
find / -atime +30 -exec rm -f {} \;
我自己試著寫了一小段SHELL,也用ll ,grep, rm 幾個命令,用起來還差強人意。
對過濾出來的文件名列表中用了一個FOR語句,再執(zhí)行rm 。現(xiàn)在我想把這段SHELL 擴展一下讓它每天定時運行將 n 天前的文件刪掉,有沒有人能給我一些提示,謝謝!
還有個問題,對于前面那位朋友提到的"find / -atime +30 -exec rm -f {} \;
"方法,我很早就試過幾次,不過好像都不太對,參數(shù) -atime n 是查找n天前被訪問過的文件,我不明白的是這里的時間參照點是什么,以及這個n天是怎么計算的。
問題二、對于"ll |cut -f 1" 這個命令我是不是用錯了,我只想取出 ll 中列出的文件名,但用cut -f 命令做不到 ,我只好換用 ll |cut -c 59- 這種方式得到我要的文件名,but it's a pool idear !我也試過用awk ,好像也不對,看看大家可不可以給我一些小小的提醒,TKS SO MUCH
問題三、如何改變 I結點 的日期格式 我現(xiàn)在的系統(tǒng)顯示的格式是:
-rw-r----- 1 msahz01 users 2253 2002年2月 2日 poheader.i
我想把這換成
-rw-rw-rw- 1 house users 2193 Apr 19 2001 hkdisp.p
如何才能做到這點?
awk 應該可以
ll | awk '{print $9}'
刪除多少天之前的文件
find /yourpath -mtime +31 -exec rm {} \;
find /yourpath -mtime +366 -exec rm {} \;
find中, -ctime, -mtime及其-atime有何區(qū)別
請問 -ctime 和 -mtime 有什么關系 ?
如果父目錄的 ctime 改變, 那它下面的文件的 ctime 就會自動都改了嗎 ?
-ctime 和 -mtime ,-atime 這些信息是存在哪兒呢 ?
我用 -mtime -1 找到了新建或改的文件.
但怎樣才能找到一天內(nèi) mv 來的文件呢( 它們的時間是原有的時間,早于一天 ) ?
用-newer選項啊。
你可以先touch一個你想要的時間的文件如下:
$ touch -t 08190800 test
$ ls -l test
-rw-r--r-- 1 dba other 0 Aug 19 08:00 test
然后
$ find . -newer test -print
.
./.sh_history
$ ls -l .sh_history
-rw------- 1 dba other 154 Aug 20 17:39 .sh_history
用touch可以寫出你想要的任何時間的文件,然后用-newer ,! -newer選項即可成功。
1.ctime含inode信息修改的時間.mtime只指文件內(nèi)容建立或修改的時間.
2 不會.
3.這些信息應該是存在文件系統(tǒng)的超級塊里.
我查了書 -ctime 是指 inode 的改變(或稱文件的狀態(tài)改變).
請問 inode 存了哪些信息 ?
做了些小測試,-mtime 改, -ctime 一定也改.
改文件名, -ctime 也會改.
誰能回答 i-node 存了哪些東西 ?
vi /usr/include/sys/inode.h
班主,我不能 access /usr/include/sys/inode.h .
摘書如下:
Directories contain directory entries. Each entry contains a file or subdirectory name and an index node reference number (i-node number). To increase speed and enhance use of disk space, the data in a file is stored at various locations in the computer's memory. The i-node contains the addresses used to locate all the scattered blocks of data associated with a file. The i-node also records other information about the file including time of modification and access, access modes, number of links, file owner, and file type.
可我發(fā)現(xiàn) -atime 改了, -ctime 還沒改. why ?
( 我先 cat 一個 ASCII 文件,再用 -atime -1 有它用 -ctime -1 居然沒有它.)
著豈不跟 inode 信息改變, ctime 就改矛盾嗎?
我不同意你貼出來的那段文章,正如我提到的那樣,atime,ctime,mtime是放到超級塊里,在sco unix下是一種叫stat的結構.(stat_32),不同的系統(tǒng)文件系統(tǒng)可能不同.
sco 下inode的結構如下:
typedef struct inode
{
struct inode *i_forw; /* inode hash chain */
struct inode *i_back; /* '' */
struct inode *av_forw; /* freelist chain */
struct inode *av_back; /* '' */
int *i_fsptr; /* "typeless" pointer to fs dependent */
ino32_t i_number; /* i number, 1-to-1 with dev address */
ushort i_ftype; /* file type = IFDIR, IFREG, etc. */
short i_fstyp; /* File system type */
off_t i_size; /* size of file */
ushort i_uid; /* owner */
ushort i_gid; /* group of owner */
ushort i_flag;
ushort i_want; /* i_flag extension to avoid MP races */
ushort i_count; /* reference count */
short i_nlink; /* directory entries */
dev_t i_rdev; /* Raw device number */
#define i_namtype i_rdev /* i_ftype==IFNAM subtype */
dev_t i_dev; /* device where inode resides */
struct mount *i_mton;/* ptr to mount table entry that */
/* this directory is mounted on */
struct region *i_rp; /* ptr to shared region if any */
struct stdata *i_sp; /* ptr to associated stream */
struct iisem *isem; /* ptr to XENIX semaphores */
struct iisd *isd; /* ptr to XENIX shared data */
} i_un;
#define i_mnton i_un.i_mton /* i_ftype==IFDIR IMOUNT */
#define i_rptr i_un.i_rp /* i_ftype==IFREG || i_ftype==IFBLK */
#define i_sptr i_un.i_sp /* i_ftype==IFCHR || i_ftype==IFIFO */
#define i_sem i_un.isem /* i_ftype==IFNAM && i_namtype==IFSEM */
#define i_sd i_un.isd /* i_ftype==IFNAM && i_namtype==IFSHD */
struct fstypsw *i_fstypp; /* ptr to file system switch FSPTR */
long *i_filocks; /* pointer to filock (structure) list */
unsigned long i_mappages; /* number of pages currently cached */
unsigned long i_vcode; /* read-ahead block save (NFS) */
short i_wcnt; /* write open count or ITEXT count */
struct lockb i_cilock; /* tas to synchronize i_flag changes */
ushort i_rdlocks; /* count of non-exclusive lockers */
} inode_t;
所以,訪問一個文件不能改變inode信息.
使用chown, chgrp, chmod命令可以很好的比較mtime和ctime
chown改變一個文件的屬主,用ctime可以找到,用mtime便找不到.
試試看.
多謝斑竹! 我是在 Solaris 上面試的.我是對 -ctime 不明白.
試的結果如下:
修改文件,-mtime 改了, -ctime 也會改.
訪問文件,-atime 改了, -ctime 沒變.
chown, chgrp, chmod,mv, 都會使 -ctime 改變,但不影響 -atime 和 -mtime.
touch 可以改 -mtime and/or -atime,但 touch -a 只改訪問時間時,-ctime也改了.
touch -m 改修改時間時,-ctime當然也改了.
好象還有別的很多東西可以令 -ctime 改變, 搞不清楚.
有什么方法可以顯示 -mtime,atime,ctime 嗎?
可以用 -ctime 來實現(xiàn)對目錄的增量文件進行備份或 transfer 嗎 ?
多謝!
沒有什么工具顯示,(可能是俺不知道)
把下面程序里的st_mtime換成st_ctime,或st_atime便可以得到你要的了.
#i nclude
int
main (int argc, char **argv)
{
struct stat buf;
char date[80];
char fname[80];
printf("Enter filename (with full path) to check mtime : ");
scanf("%s",fname);
stat(fname, &buf);
printf ("mtime (in sec) of %s = %ld\n", fname, buf.st_mtime);
strcpy(date, ctime((time_t *)&(buf.st_mtime)));
printf ("mtime (in date) of %s = %s\n", fname, date);
}
至于文件備份,有什么不可以的么?
mtime ls -l 最近修改文件內(nèi)容的時間
atime ls -lu 最近訪問文件的時間
ctime ls -li 最近文件有所改變的狀態(tài) ,如文件修改,屬性\屬主 改變 ,節(jié)點 ,鏈接變化等 ,應該是不拘泥只是時間前后的改變
俺看了ls的幫助,以為只是按ctime或atime排序,顯示的時間還是mtime.
仔細比較了一下,ayhan說的是對的.謝謝ayhan.
多謝 ahyan 提示 ! 我在 Solaris 上試過如下:
mtime 用 ls -l 看到
atime 用 ls -lu 看到
ctime 用 ls -lc 看到. (ls -li 只有 inode number)
摘書如下:
-c Uses time of last modification of the i-node (file
created, mode changed, and so forth) for sorting (-t)
or printing (-l or -n).
-u Uses time of last access instead of last modification
for sorting (with the -t option) or printing (with the
-l option).
-i For each file, prints the i-node number in the first
column of the report.
我在sco unix5.0.5中試了一下,好像不對:chmod,chgrp等不會改變ls -il顯示的時間;vi,touch倒是有影響。
每一種操作系統(tǒng)都是由成千上萬個不同種類的文件所組成的。其中有系統(tǒng)本身自帶的文件,用戶自己的文件,還有共享文件等等。我們有時候經(jīng)常忘記某份文件放在硬盤中的哪個地方。在微軟的WINDOWS操作系統(tǒng)中要查找一份文件是相當簡單的事情, 只要在桌面上點擊“開始”-“搜索”中就能按照各種方式在本地硬盤上,局域網(wǎng)絡,甚至在INTERNET上查找各種文件,文檔。
可是使用linux的用戶就沒有那么幸運了,在Linux上查找某個文件確實是一件比較麻煩的事情。畢竟在linux中需要我們使用專用的“查找”命令來尋找在硬盤上的文件。Linux 下的文件表達格式非常復雜,不象WINDOWS,DOS下都是統(tǒng)一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后綴就非常容易查找到。linux中查找文件的命令通常為“find”命令,“find”命令能幫助我們在使用,管理linux的日常事務中方便的查找出我們需要的文件。對于linux新手來說,“find”命令也是了解和學習Linux 文件特點的方法。因為linux發(fā)行版本繁多,版本升級很快,在Linux書籍上往往寫明某個配置文件的所在位置,往往linux新手按圖索驥還是不能找到。比如說REDHAT Linux 7.O 和REDHAT linux 7.1中有些重要的配置文件所在的硬盤位置和文件目錄就有了很大的改變,如果不學會使用“find”命令,那么在成千上萬的linux文件中要找到其中的一個配置文件是相當困難的,筆者在沒有精通“find”命令之前就吃過這樣的苦頭。好,下面就詳細為大家介紹強大的“find”命令的全部使用方法和用途。
通過文件名查找法:
這個方法說起來就和在WINDOWS下查找文件一樣容易理解了。 如果你把這個文件放在單個的文件夾里面,只要使用常見的“ls"命令就能方便的查找出來,那么使用“find”命令來查找它就不能給你留下深刻的印象,畢竟“find”命令的強大功能不止這個。如果知道了某個文件的文件名,而不知道這個文件放到哪個文件夾,甚至是層層套嵌的文件夾里。舉例說明,假設你忘記了httpd.conf這個文件在系統(tǒng)的哪個目錄下,甚至在系統(tǒng)的某個地方也不知道,則這是可以使用如下命令:
find / -name httpd.conf
這個命令語法看起來很容易就明白了,就是直接在find后面寫上 -name,表明要求系統(tǒng)按照文件名查找,最后寫上httpd.conf這個目標文件名即可。稍等一會系統(tǒng)會在計算機屏幕上顯示出查找結果列表:
etc/httpd/conf/httpd.conf
這就是httpd.conf這個文件在linux系統(tǒng)中的完整路徑。查找成功。
如果輸入以上查找命令后系統(tǒng)并沒有顯示出結果,那么不要以為系統(tǒng)沒有執(zhí)行 find/ -name httpd.conf命令,而可能是你的系統(tǒng)中沒有安裝Apache服務器,這時只要你安裝了Apache Web服務器,然后再使用find / -name httpd.conf就能找到這個配置文件了。
無錯誤查找技巧:
在linux系統(tǒng)中“find”命令是大多數(shù)系統(tǒng)用戶都可以使用的命令, 并不是ROOT系統(tǒng)管理員的專利。但是普通用戶使用“find”命令時也有可能遇到這樣的問題,那就是L inux系統(tǒng)中系統(tǒng)管理員ROOT可以把某些文件目錄設置成禁止訪問模式。這樣普通用戶就沒有權限用“find”命令來查詢這些目錄或者文件。當普通用戶使用“find”命令來查詢這些文件目錄是,往往會出現(xiàn)"Permissiondenied."(禁止訪問)字樣。 系統(tǒng)將無法查詢到你想要的文件。為了避免這樣的錯誤,我們可是使用轉移錯誤提示的方法嘗試著查找文件,輸入
find / -name access_log 2>/dev/null
這個方法是把查找錯誤提示轉移到特定的目錄中去。系統(tǒng)執(zhí)行這個命令后,遇到錯誤的信息就直接輸送到stderrstream 2 中,access_log 2 就是表明系統(tǒng)將把錯誤信息輸送到stderrstream 2中,/dev/null是一個特殊的文件,表明空的或者錯誤的信息,這樣查詢到的錯誤信息將被轉移了,不會再顯示了。
在linux系統(tǒng)查找文件也會遇到這樣一個實際問題。如果我們在整個硬盤, 這個系統(tǒng)中查找某個文件就要花費相當長的一段時間,特別是大型linux系統(tǒng)和容量較大的硬盤,文件放在套嵌很深的目錄中的時候。如果我們知道了這個文件存放在某個大的目錄中,那么只要在這個目錄中往下找就能節(jié)省很多時間了。使用find /etc -name httpd.conf 就可以解決這個問題。上面的命令就是表示在etc目錄中查詢httpd.conf這個文件。 這里再說明一下“/ ”這個函數(shù)符號的含義,如果輸入 “find/ ”就是表示要求linux系統(tǒng)在整個 ROOT目錄下查找文件,也就是在整個硬盤上查找文件,而“find/etc”就是只在 etc目錄下查找文件。因為“find/etc”表示只在etc目錄下查找文件, 所以查找的速度就相應要快很多了。
根據(jù)部分文件名查找方法:
這個方法和在WINDOWS中查找已知的文件名方法是一樣的。不過在linux中根據(jù)部分文件名查找文件的方法要比在WINDOWS中的同類查找方法要強大得多。 例如我們知道某個文件包含有srm這3個字母,那么要找到系統(tǒng)中所有包含有這3個字母的文件是可以實現(xiàn)的,輸入:
find /etc -name '*srm*'
這個命令表明了linux系統(tǒng)將在/etc 整個目錄中查找所有的包含有srm這3個字母的文件,比如 absrmyz,tibc.srm等等符合條件的文件都能顯示出來。如果你還知道這個文件是由 srm 這3個字母打頭的,那么我們還可以省略最前面的星號,命令如下:
find/etc -name 'srm*'
這是只有像srmyz 這樣的文件才被查找出來,象absrmyz或者absrm這樣的文件都不符合要求,不被顯示,這樣查找文件的效率和可靠性就大大增強了。
根據(jù)文件的特征查詢方法:
如果只知道某個文件的大小,修改日期等特征也可以使用"find"命令查找出來,這和 WINDOWS系統(tǒng)中的"搜索"功能是基本相同的。在微軟的"搜索"中WINDOWS中的"搜索助理"使得搜索文件和文件夾、打印機、用戶以及網(wǎng)絡中的其他計算機更加容易。它甚至使在 Internet 上搜索更加容易。"搜索助理"還包括一個索引服務, 該服務維護了計算機中所有文件的索引,使得搜索速度更快。使用"搜索助理"時,用戶可以指定多個搜索標準。例如,用戶可以按名稱、類型及大小搜索文件和文件夾。用戶甚至可以搜索包含特定文本的文件。如果用戶正使用 Active Directory,這時還可以搜索帶有特定名稱或位置的打印機。
例如我們知道一個linux文件大小為1,500 bytes,那么我們可是使用如下命令來查詢 find / -size 1500c,字符 c 表明這個要查找的文件的大小是以bytes為單位。如果我們連這個文件的具體大小都不知道,那么在linux中還可以進行模糊查找方式來解決。 例如我們輸入find/ -size +10000000c 這個命令, 則標明我們指定系統(tǒng)在根目錄中查找出大于10000000字節(jié)的文件并顯示出來。命令中的“+”是表示要求系統(tǒng)只列出大于指定大小的文件,而使用“-”則表示要求系統(tǒng)列出小于指定大小的文件。下面的列表就是在linux使用不同"find"命令后系統(tǒng)所要作出的查找動作, 從中我們很容易看出在linux中使用"find" 命令的方式是很多的,"find"命令查找文件只要靈活應用, 絲毫不必在WINDOWS中查找能力差。
find / -amin -10 # 查找在系統(tǒng)中最后10分鐘訪問的文件
find / -atime -2 # 查找在系統(tǒng)中最后48小時訪問的文件
find / -empty # 查找在系統(tǒng)中為空的文件或者文件夾
find / -group cat # 查找在系統(tǒng)中屬于 groupcat的文件
find / -mmin -5 # 查找在系統(tǒng)中最后5分鐘里修改過的文件
find / -mtime -1 #查找在系統(tǒng)中最后24小時里修改過的文件
find / -nouser #查找在系統(tǒng)中屬于作廢用戶的文件
find / -user fred #查找在系統(tǒng)中屬于FRED這個用戶的文件
下面的列表就是對find命令所可以指定文件的特征進行查找的部分條件。在這里并沒有列舉所有的查找條件,參考有關linux有關書籍可以知道所有find命令的查找函數(shù)。
-amin n
查找系統(tǒng)中最后N分鐘訪問的文件
-atime n
查找系統(tǒng)中最后n*24小時訪問的文件
-cmin n
查找系統(tǒng)中最后N分鐘被改變狀態(tài)的文件
-ctime n
查找系統(tǒng)中最后n*24小時被改變狀態(tài)的文件
-empty
查找系統(tǒng)中空白的文件,或空白的文件目錄,或目錄中沒有子目錄的文件夾
-false
查找系統(tǒng)中總是錯誤的文件
-fstype type
查找系統(tǒng)中存在于指定文件系統(tǒng)的文件,例如:ext2
-gid n
查找系統(tǒng)中文件數(shù)字組 ID 為 n的文件
-group gname
查找系統(tǒng)中文件屬于gnam文件組,并且指定組和ID的文件
Find命令的控制選項說明:
Find命令也提供給用戶一些特有的選項來控制查找操作。下表就是我們總結出的最基本,最常用的find命令的控制選項及其用法。
選項
用途描述
-daystart
.測試系統(tǒng)從今天開始24小時以內(nèi)的文件,用法類似-amin
-depth
使用深度級別的查找過程方式,在某層指定目錄中優(yōu)先查找文件內(nèi)容
-follow
遵循通配符鏈接方式查找; 另外,也可忽略通配符鏈接方式查詢
-help
顯示命令摘要
-maxdepth levels
在某個層次的目錄中按照遞減方法查找
-mount
不在文件系統(tǒng)目錄中查找, 用法類似 -xdev.
-noleaf
禁止在非UNUX文件系統(tǒng),MS-DOS系統(tǒng),CD-ROM文件系統(tǒng)中進行最優(yōu)化查找
-version
打印版本數(shù)字
使用-follow選項后,find命令則遵循通配符鏈接方式進行查找,除非你指定這個選項,否則一般情況下find命令將忽略通配符鏈接方式進行文件查找。
-maxdepth選項的作用就是限制find命令在目錄中按照遞減方式查找文件的時候搜索文件超過某個級別或者搜索過多的目錄,這樣導致查找速度變慢,查找花費的時間過多。例如,我們要在當前(.)目錄技巧子目錄中查找一個名叫fred的文件,我們可以使用如下命令
find . -maxdepth 2 -name fred
假如這個fred文件在./sub1/fred目錄中,那么這個命令就會直接定位這個文件,查找很容易成功。假如,這個文件在. /sub1/sub2/fred目錄中,那么這個命令就無法查找到。因為前面已經(jīng)給find命令在目錄中最大的查詢目錄級別為2,只能查找2層目錄下的文件。這樣做的目的就是為了讓find命令更加精確的定位文件,如果你已經(jīng)知道了某個文件大概所在的文件目錄級數(shù),那么加入-maxdepth n 就很快的能在指定目錄中查找成功。
使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如我們想在/tmp目錄中查找大于100000000字節(jié)并且在48小時內(nèi)修改的某個文件,我們可以使用-and 來把兩個查找選項鏈接起來組合成一個混合的查找方式。
find /tmp -size +10000000c -and -mtime +2
學習過計算機語言的朋友都知道,在計算機語言里,使用and ,or 分別表示“與”和“或”的關系。在linux系統(tǒng)的查找命令中一樣通用。
還有這樣的例子,
find / -user fred -or -user george
我們可以解釋為在/tmp目錄中查找屬于fred或者george這兩個用戶的文件。
在find命令中還可以使用“非”的關系來查找文件,如果我們要在/tmp目錄中查找所有不屬于panda的文件,使用一個簡單的
find /tmp ! -user panda
命令就可以解決了。很簡單。
查找并顯示文件的方法
查找到某個文件是我們的目的,我們更想知道查找到的文件的詳細信息和屬性,如果我們采取現(xiàn)查找文件,在使用LS命令來查看文件信息是相當繁瑣的,現(xiàn)在我們也可以把這兩個命令結合起來使用。
find / -name "httpd.conf" -ls
系統(tǒng)查找到httpd.conf文件后立即在屏幕上顯示httpd.conf文件信息。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf
下面的表格就是一些常用的查找文件并顯示文件信息的參數(shù)和使用方法
選項
用途描述
-exec command;
查找并執(zhí)行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
給用戶命令執(zhí)行操作,根據(jù)用戶的Y 確認輸入執(zhí)行
-printf format
打印文件格式
-ls
打印同種文件格式的文件
總結:到這里為止我們已經(jīng)學習了這名多關于find命令的使用方法,也列出了很多常用的find命令的選項,如果我們能熟練掌握在linux中find命令的使用方法,那么在Linux中查找文件也不是一件困難的事情。
轉自:
http://www.lupaworld.com/94908/viewspace-109380.html
posted on 2009-11-10 22:32
chatler 閱讀(426)
評論(0) 編輯 收藏 引用 所屬分類:
Shell