日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第十一天:find

發布時間:2024/9/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十一天:find 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一般形式: 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點。 -follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。 -cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。 另外,下面三個的區別: -amin n?查找系統中最后N分鐘訪問的文件 -atime n?查找系統中最后n*24小時訪問的文件 -cmin n?查找系統中最后N分鐘被改變文件狀態的文件 -ctime n?查找系統中最后n*24小時被改變文件狀態的文件 -mmin n?查找系統中最后N分鐘被改變文件數據的文件 -mtime n?查找系統中最后n*24小時被改變文件數據的文件
例子: 使用exec或ok來執行shell命令 find命令匹配到了當前目錄下的所有普通文件,并在-exec選項中使用ls -l命令將它們列出。 find . -type f -exec ls -l { } \; 在/logs目錄中查找更改時間在5日以前的文件并刪除它們: $ find logs -type f -mtime +5 -exec rm { } \; find命令在當前目錄中查找所有文件名以.LOG結尾、更改時間在5日以上的文件,并刪除它們,只不過在刪除之前先給出提示。 $ find . -name "*.conf" -mtime +5 -ok rm { } \; find命令首先匹配所有文件名為“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后執行grep命令看看在這些文件中是否存在一個sam用戶。find /etc -name "passwd*" -exec grep "sam" { } \;
查找當前用戶主目錄下的所有文件: find $HOME -print ? 或者 find ~ -print 列出當前用戶主目錄下文本屬主有讀,寫權限,本組和其他只有讀的權限 find . -type f -perm 644 -exec ls -l {} \; 列出系統文件長度為0的文件 find / -type f -size 0 -exec ls -l {} \; 列出/var/logs路徑下更改時間在7天前的并提示刪掉 find /var/logs -type f -mtime +7 -ok ?rm {} \;? 找出屬于root組的文件 find . -group root -exec ls -l {} \; find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok ?rm {} \; ?后綴數字不超過999的文件 find /apps -path "/apps/bin" -prune -o -print 在/apps目錄下查找文件,但不希望在/apps/bin目錄下查找,可以用: ?find /apps -path "/apps/bin" -prune -o -print -path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o -print 的簡寫表達式按順序求值, -a 和 -o 都是短路求值,與 shell 的 && 和 || 類似如果 -path "/usr/sam" 為真,則求值 -prune , -prune 返回真,與邏輯表達式為真;否則不求值 -prune,與邏輯表達式為假。如果 -path "/usr/sam" -a -prune 為假,則求值 -print ,-print返回真,或邏輯表達式為真;否則不求值 -print,或邏輯表達式為真。 這個表達式組合特例可以用偽碼寫為 if -path "/usr/sam" then -prune else -print
避開多個文件夾 find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print 圓括號表示表達式的結合。 \ 表示引用,即指示 shell 不對后面的字符作特殊解釋,而留給 find 命令去解釋其意義。 查找某一確定文件,-name等選項加在-o 之后 #find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print
如果希望按照更改時間來查找文件,可以使用mtime,atime或ctime選項。如果系統突然沒有可用空間了,很有可能某一個文件的長度在此期間增長迅速,這時就可以用mtime選項來查找這樣的文件。 在系統根目錄下查找更改時間在5日以內的文件? find / -mtime -5 -print find -newer httpd1.conf ! -newer temp -ls 查找更改時間比文件httpd1.conf新但比文件temp舊的文件:


在使用find命令時,可能希望先匹配所有的文件,再在子目錄中查找。使用depth選項就可以使find命令這樣做。這樣做的一個原因就是,當在使用find命令向磁帶上備份文件系統時,希望首先備份所有的文件,其次再備份子目錄中的文件。 find / -name "CON.FILE" -depth -print

轉載于:https://my.oschina.net/u/566829/blog/227105

總結

以上是生活随笔為你收集整理的第十一天:find的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。